====== Eigene Klassen ====== class TestKlasse{ [string]$Eigenschaft [int]$ZweiteEigenschaft } Diese Art der Definition kann man jetzt überall in Powershell ((ab Version 5)) 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 [[https://www.heise.de/developer/artikel/Klassendefinition-in-PowerShell-5-0-mit-dem-neuen-Schluesselwort-class-2369638.html|Quelle]] [[https://www.kaufmann-24.de/index.php?controller=post&action=view&id_post=9|Eigener Blogpost zum Thema]] {{tag>[Powershell Klasse class]}}