2 Pluspunkte 0 Minuspunkte

Wie kann ich die möglichen parameter für "add-type" in Powershell anzeigen?   

PS C:\Windows\system32> add-type | get-member  

Cmdlet Add-Type an der Befehlspipelineposition 1 Geben Sie Werte für die folgenden Parameter an: TypeDefinition:
von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Add-Type ist ein Cmdlet und kein Typ oder Objekt. Deshalb kannst du Get-Member nicht darauf anwenden. Du kannst die integrierte Hilfefunktion nutzen.

Get-Help Add-Type
von  
0 Pluspunkte 0 Minuspunkte

Das Cmdlet Add-Type funktioniert nicht direkt mit Get-Member weil Add-Type normalerweise kein Ausgabeobjekt hat, auf das Get-Member angewendet werden kann. Das Cmdlet Get-Disk gibt als Standardobjekt eine Liste aller Festplatten aus die von Get-Member erkannt werden.

Wenn du Add-Type verwendest, um einen benutzerdefinierten Typ zu erstellen, würde dieser Typ dann seine eigenen Eigenschaften und Methoden haben, auf die du mit Get-Member zugreifen könntest.

$sourceCode = @"
public class MathFunctions {
    public static int Add(int a, int b) {
        return a + b;
    }
}
"@

Diese Klasse kannst du mit Add-Type laden.

Add-Type -TypeDefinition $sourceCode

Das erstellt die Klasse als Typ "System.Runtime". Du kannst die Methode jetzt mit

[MathFunctions]::Add(2, 3)

aufrufen. Die Methode wird nicht als direktes Mitglied des Typs angezeigt, wenn du Get-Member verwendest. Das liegt daran, dass Add-Type eine statische Methode in eine Klasse einbettet und statische Methoden in PowerShell nicht wie Instanzmethoden behandelt werden. Um die Methode Add anzuzeigen, könntest du den Typ mit GetMethods filtern, um nur statische Methoden anzuzeigen.

[MathFunctions] | Get-Member -Static -MemberType Method

von (776 Punkte)