powershell:eigeneklassen
Eigene Klassen
class TestKlasse{ [string]$Eigenschaft [int]$ZweiteEigenschaft }
Diese Art der Definition kann man jetzt überall in Powershell 1) anwenden und somit seine eigenen Datenkonstrukte erzeugen.
Ein neues Objekt erzeugt man dann so:
$object = New-Object -TypeName TestKlasse
Ein $object | Get-Member
zeigt anschließend wie erwartet alle definierten Eigenschaften an:
PS C:\> $object | Get-Member TypeName: TestKlasse Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() Eigenschaft Property string Eigenschaft {get;set;} ZweiteEigenschaft Property int ZweiteEigenschaft {get;set;}
Vorteil dieser Methode ist, dass man in selbstgeschriebenen Funktionen nun sicherstellen kann, dass auch komplexe Datentypen angefordert und erkannt werden können:
function Test-Something{ [CmdletBinding()] param( [Parameter(Mandatory=$true)]$TestKlasse ) begin{ if (($TestKlasse | Get-Member).TypeName -ne "TestKlasse"){ throw "Falscher Datentyp" } } process{ #do something } end{} }
Leider geht es (zumindest im Moment) noch nicht intuitiver:
Doch, genau so geht es - ich vermute, dass die Powershell hier auf Groß-/Kleinschreibung achtet…
[Parameter(Mandatory=$true)][TestKlasse]$TestKlasse
1)
ab Version 5
powershell/eigeneklassen.txt · Zuletzt geändert: 2018/05/03 09:34 von ronny