Add-Type
Fügt einer PowerShell-Sitzung eine Microsoft .NET-Klasse hinzu.
Syntax
FromSource (Standardwert)
Add-Type
[-TypeDefinition] <String>
[-Language <Language>]
[-ReferencedAssemblies <String[]>]
[-OutputAssembly <String>]
[-OutputType <OutputAssemblyType>]
[-PassThru]
[-IgnoreWarnings]
[-CompilerOptions <String[]>]
[<CommonParameters>]
FromMember
Add-Type
[-Name] <String>
[-MemberDefinition] <String[]>
[-Namespace <String>]
[-UsingNamespace <String[]>]
[-Language <Language>]
[-ReferencedAssemblies <String[]>]
[-OutputAssembly <String>]
[-OutputType <OutputAssemblyType>]
[-PassThru]
[-IgnoreWarnings]
[-CompilerOptions <String[]>]
[<CommonParameters>]
FromPath
Add-Type
[-Path] <String[]>
[-ReferencedAssemblies <String[]>]
[-OutputAssembly <String>]
[-OutputType <OutputAssemblyType>]
[-PassThru]
[-IgnoreWarnings]
[-CompilerOptions <String[]>]
[<CommonParameters>]
FromLiteralPath
Add-Type
-LiteralPath <String[]>
[-ReferencedAssemblies <String[]>]
[-OutputAssembly <String>]
[-OutputType <OutputAssemblyType>]
[-PassThru]
[-IgnoreWarnings]
[-CompilerOptions <String[]>]
[<CommonParameters>]
FromAssemblyName
Add-Type
-AssemblyName <String[]>
[-PassThru]
[<CommonParameters>]
Beschreibung
Mit dem Cmdlet Add-Type können Sie eine Microsoft .NET Core-Klasse in Ihrer PowerShell-Sitzung definieren. Anschließend können Sie Objekte mithilfe des Cmdlets New-Object instanziieren und die Objekte genauso wie jedes .NET Core-Objekt verwenden. Wenn Sie Ihrem PowerShell-Profil einen Add-Type Befehl hinzufügen, ist die Klasse in allen PowerShell-Sitzungen verfügbar.
Sie können den Typ angeben, indem Sie eine vorhandene Assembly- oder Quellcodedateien angeben oder den Quellcode inline angeben oder in einer Variablen gespeichert haben. Sie können sogar nur eine Methode angeben und Add-Type definiert und generiert die Klasse. Unter Windows können Sie dieses Feature verwenden, um Aufrufe von Plattformaufrufen (P/Invoke) an nicht verwaltete Funktionen in PowerShell zu tätigen. Wenn Sie Quellcode angeben, kompiliert Add-Type den angegebenen Quellcode und generiert eine Speicherassembly, die die neuen .NET Core-Typen enthält.
Sie können die Parameter von Add-Type verwenden, um eine alternative Sprache und einen Compiler anzugeben, C# ist die Standardsprache, Compileroptionen, Assemblyabhängigkeiten, der Klassennamespace, die Namen des Typs und die resultierende Assembly.
Ab PowerShell 7 kompiliert Add-Type keinen Typ, wenn bereits ein Typ mit demselben Namen vorhanden ist. Darüber hinaus sucht Add-Type nach Assemblys in einem ref Ordner unter dem Ordner, der pwsh.dllenthält.
Beispiele
Beispiel 1: Hinzufügen eines .NET-Typs zu einer Sitzung
In diesem Beispiel wird der Sitzung die BasicTest Klasse hinzugefügt, indem Quellcode angegeben wird, der in einer Variablen gespeichert ist. Die BasicTest Klasse wird verwendet, um ganze Zahlen hinzuzufügen, ein Objekt zu erstellen und ganze Zahlen zu multiplizieren.
$Source = @"
public class BasicTest
{
public static int Add(int a, int b)
{
return (a + b);
}
public int Multiply(int a, int b)
{
return (a * b);
}
}
"@
Add-Type -TypeDefinition $Source
[BasicTest]::Add(4, 3)
$BasicTestObject = New-Object BasicTest
$BasicTestObject.Multiply(5, 2)
Die $Source Variable speichert den Quellcode für die Klasse. Der Typ verfügt über eine statische Methode namens Add und eine nicht statische Methode, die Multiplyaufgerufen wird.
Das Cmdlet Add-Type fügt der Sitzung die Klasse hinzu. Da der Code inline quellcode verwendet wird, verwendet der Befehl den TypeDefinition Parameter, um den Code in der $Source Variablen anzugeben.
Die Add statische Methode der BasicTest Klasse verwendet die Doppelpunktzeichen (::), um ein statisches Element der Klasse anzugeben. Die ganzen Zahlen werden hinzugefügt, und die Summe wird angezeigt.
Das cmdlet New-Object instanziiert eine Instanz der BasicTest Klasse. Das neue Objekt wird in der variablen $BasicTestObject gespeichert.
$BasicTestObject verwendet die Multiply-Methode. Die ganzen Zahlen werden multipliziert, und das Produkt wird angezeigt.
Beispiel 2: Untersuchen eines hinzugefügten Typs
In diesem Beispiel wird das Cmdlet Get-Member verwendet, um die Objekte zu untersuchen, die die cmdlets Add-Type und New-Object in Beispiel 1erstellt haben.
[BasicTest] | Get-Member
TypeName: System.RuntimeType
Name MemberType Definition
---- ---------- ----------
AsType Method type AsType()
Clone Method System.Object Clone(), System.Object ICloneable.Clone()
Equals Method bool Equals(System.Object obj), bool Equals(type o)
FindInterfaces Method type[] FindInterfaces(System.Reflection.TypeFilter filter...
...
[BasicTest] | Get-Member -Static
TypeName: BasicTest
Name MemberType Definition
---- ---------- ----------
Add Method static int Add(int a, int b)
Equals Method static bool Equals(System.Object objA, System.Object objB)
new Method BasicTest new()
ReferenceEquals Method static bool ReferenceEquals(System.Object objA, System.Object objB)
$BasicTestObject | Get-Member
TypeName: BasicTest
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
Multiply Method int Multiply(int a, int b)
ToString Method string ToString()
Das cmdlet Get-Member ruft den Typ und die Member der BasicTest Klasse ab, die der Sitzung hinzugefügt Add-Type. Der Get-Member Befehl zeigt an, dass es sich um ein System.RuntimeType-Objekt handelt, das von der System.Object Klasse abgeleitet wird.
Der parameter Get-MemberStatic ruft die statischen Eigenschaften und Methoden der klasse BasicTest ab. Die Ausgabe zeigt, dass die Add Methode enthalten ist.
Das Cmdlet Get-Member ruft die Elemente des Objekts ab, das in der variablen $BasicTestObject gespeichert ist.
$BasicTestObject wurde mithilfe des Cmdlets New-Object mit der BasicTest-Klasse erstellt. Die Ausgabe zeigt an, dass der Wert der $BasicTestObject Variablen eine Instanz der BasicTest Klasse ist und dass sie ein Element mit dem Namen Multiplyenthält.
Beispiel 3: Hinzufügen von Typen aus einer Assembly
In diesem Beispiel werden die Klassen aus der JsonSchema.NET.dll Assembly zur aktuellen Sitzung hinzugefügt.
Set-Location -Path $PSHOME
$AccType = Add-Type -AssemblyName *jsonschema* -PassThru
Set-Location verwendet den parameter Path, um die variable $PSHOME anzugeben. Die Variable verweist auf das PowerShell-Installationsverzeichnis, in dem sich die DLL-Datei befindet.
Die $AccType Variable speichert ein Objekt, das mit dem Cmdlet Add-Type erstellt wurde.
Add-Type verwendet den parameter AssemblyName, um den Namen der Assembly anzugeben. Mit dem Sternchen (*) können Sie die richtige Assembly auch dann abrufen, wenn Sie nicht sicher sind, ob der Name oder die Schreibweise vorhanden ist. Der PassThru Parameter generiert Objekte, die die Klassen darstellen, die der Sitzung hinzugefügt werden.
Beispiel 4: Aufrufen systemeigener Windows-APIs
In diesem Beispiel wird veranschaulicht, wie systemeigene Windows-APIs in PowerShell aufgerufen werden.
Add-Type verwendet den Plattformaufrufmechanismus (P/Invoke), um eine Funktion in User32.dll von PowerShell aufzurufen. Dieses Beispiel funktioniert nur auf Computern, auf denen das Windows-Betriebssystem ausgeführt wird.
$Signature = @"
[DllImport("user32.dll")]public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
"@
$addTypeSplat = @{
MemberDefinition = $Signature
Name = "Win32ShowWindowAsync"
Namespace = 'Win32Functions'
PassThru = $true
}
$ShowWindowAsync = Add-Type @addTypeSplat
# Minimize the PowerShell console
$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $PID).MainWindowHandle, 2)
# Restore the PowerShell console
$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $PID).MainWindowHandle, 4)
Die $Signature Variable speichert die C#-Signatur der ShowWindowAsync-Funktion. Um sicherzustellen, dass die resultierende Methode in einer PowerShell-Sitzung sichtbar ist, wurde das schlüsselwort public der Standardsignatur hinzugefügt. Weitere Informationen finden Sie unter ShowWindowAsync--Funktion.
Die variable $ShowWindowAsync speichert das vom Add-TypePassThru Parameter erstellte Objekt.
Das Cmdlet Add-Type fügt der PowerShell-Sitzung die ShowWindowAsync-Funktion als statische Methode hinzu. Der Befehl verwendet den parameter MemberDefinition, um die in der $Signature Variable gespeicherte Methodendefinition anzugeben. Der Befehl verwendet den Name und Namespace Parameter, um einen Namen und Namespace für die Klasse anzugeben. Der PassThru Parameter generiert ein Objekt, das die Typen darstellt.
Die neue ShowWindowAsync statische Methode wird in den Befehlen verwendet, um die PowerShell-Konsole zu minimieren und wiederherzustellen. Die Methode verwendet zwei Parameter: das Fensterhandle und eine ganze Zahl, die angibt, wie das Fenster angezeigt wird.
Um die PowerShell-Konsole zu minimieren, verwendet ShowWindowAsync das Cmdlet Get-Process mit der $PID automatischen Variablen, um den Prozess abzurufen, der die aktuelle PowerShell-Sitzung hosten soll. Anschließend wird die MainWindowHandle Eigenschaft des aktuellen Prozesses und ein Wert von 2verwendet, der den SW_MINIMIZE-Wert darstellt.
Um das Fenster wiederherzustellen, verwendet ShowWindowAsync einen Wert von 4 für die Fensterposition, der den SW_RESTORE Wert darstellt.
Verwenden Sie zum Maximieren des Fensters den Wert 3, der SW_MAXIMIZEdarstellt.
Parameter
-AssemblyName
Gibt den Namen einer Assembly an, die die Typen enthält.
Add-Type übernimmt die Typen aus der angegebenen Assembly. Dieser Parameter ist erforderlich, wenn Sie Typen basierend auf einem Assemblynamen erstellen.
Geben Sie den vollständigen oder einfachen Namen ein, der auch als Teilname einer Assembly bezeichnet wird. Im Assemblynamen sind Wildcardzeichen zulässig. Wenn Sie einen einfachen oder teilweisen Namen eingeben, löst Add-Type ihn in den vollständigen Namen auf und verwendet dann den vollständigen Namen, um die Assembly zu laden.
Die Verwendung der Parameter Path oder LiteralPath garantiert, dass Sie die Assembly laden, die Sie laden möchten. Wenn Sie den parameter AssemblyName verwenden, fordert PowerShell .NET auf, den Assemblynamen mithilfe des standardmäßigen .NET-Assemblyauflösungsprozesses aufzulösen. Da .NET zuerst den Anwendungsordner durchsucht, kann Add-Type eine Assembly aus $PSHOME anstelle der Version im aktuellen Ordner laden. Weitere Informationen finden Sie unter Assemblyspeicherort.
Wenn .NET den Namen nicht auflösen kann, sucht PowerShell an dem aktuellen Speicherort, um die Assembly zu finden. Wenn Sie Platzhalter im parameter AssemblyName verwenden, schlägt der .NET-Assemblyauflösungsprozess fehl, sodass PowerShell am aktuellen Speicherort angezeigt wird.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
| Aliase: | EIN |
Parametersätze
FromAssemblyName
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-CompilerOptions
Gibt die Optionen für den Quellcodecompiler an. Diese Optionen werden ohne Überarbeitung an den Compiler gesendet.
Mit diesem Parameter können Sie den Compiler auf die Generierung einer ausführbaren Datei, einbetten von Ressourcen oder festlegen von Befehlszeilenoptionen wie der Option /unsafe verweisen.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
FromSource
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromMember
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromLiteralPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-IgnoreWarnings
Ignoriert Compilerwarnungen. Verwenden Sie diesen Parameter, um zu verhindern, dass Add-Type Compilerwarnungen als Fehler behandeln.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
FromSource
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromMember
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromLiteralPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Language
Gibt die Sprache an, die im Quellcode verwendet wird. Der zulässige Wert für diesen Parameter ist CSharp.
Parametereigenschaften
| Typ: | Language |
| Standardwert: | CSharp |
| Zulässige Werte: | CSharp |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
FromSource
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromMember
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-LiteralPath
Gibt den Pfad zu Quellcodedateien oder Assembly-DLL-Dateien an, die die Typen enthalten. Im Gegensatz zu Pathwird der Wert des LiteralPath--Parameters genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Wildcards interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen signalisieren PowerShell, dass keine Zeichen als Escapesequenzen interpretiert werden sollen.
Die Verwendung der Parameter Path oder LiteralPath garantiert, dass Sie die Assembly laden, die Sie laden möchten.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PSPath, EP |
Parametersätze
FromLiteralPath
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-MemberDefinition
Gibt neue Eigenschaften oder Methoden für die Klasse an.
Add-Type generiert den Vorlagencode, der zur Unterstützung der Eigenschaften oder Methoden erforderlich ist.
Unter Windows können Sie dieses Feature verwenden, um Aufrufe von Plattformaufrufen (P/Invoke) an nicht verwaltete Funktionen in PowerShell zu tätigen.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
FromMember
| Position: | 1 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Name
Gibt den Namen der zu erstellenden Klasse an. Dieser Parameter ist beim Generieren eines Typs aus einer Memberdefinition erforderlich.
Der Typname und der Namespace müssen innerhalb einer Sitzung eindeutig sein. Sie können einen Typ nicht entladen oder ändern. Um den Code für einen Typ zu ändern, müssen Sie den Namen ändern oder eine neue PowerShell-Sitzung starten. Andernfalls schlägt der Befehl fehl.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
FromMember
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Namespace
Standardmäßig erstellt dieser Befehl den Typ im Microsoft.PowerShell.Commands.AddType.AutoGeneratedTypes Namespace. Wenn Sie diesen Parameter verwenden, wird der Typ im angegebenen Namespace erstellt. Wenn der Wert eine leere Zeichenfolge ist, wird der Typ im globalen Namespace erstellt.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | NS |
Parametersätze
FromMember
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-OutputAssembly
Generiert eine DLL-Datei für die Assembly mit dem angegebenen Namen am Speicherort. Geben Sie einen optionalen Pfad und Dateinamen ein. Platzhalterzeichen sind zulässig. Standardmäßig generiert Add-Type die Assembly nur im Arbeitsspeicher. Wenn Sie die Assembly in eine Datei ausgeben, sollten Sie den PassThru--Parameter einschließen, um den Typ aus der neu erstellten Assembly zurückzugeben.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
| Aliase: | OA |
Parametersätze
FromSource
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromMember
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromLiteralPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-OutputType
Gibt den Ausgabetyp der Ausgabeassembly an. Standardmäßig wird kein Ausgabetyp angegeben. Dieser Parameter ist nur gültig, wenn eine Ausgabeassembly im Befehl angegeben wird. Weitere Informationen zu den Werten finden Sie unter OutputAssemblyType Enumeration.
Die zulässigen Werte für diesen Parameter sind wie folgt:
ConsoleApplicationLibraryWindowsApplication
Von Bedeutung
Ab PowerShell 7.1 werden ConsoleApplication und WindowsApplication nicht unterstützt, und PowerShell löst einen Beendigungsfehler aus, wenn beide als Werte für den parameter OutputType angegeben werden.
Parametereigenschaften
| Typ: | OutputAssemblyType |
| Standardwert: | None |
| Zulässige Werte: | ConsoleApplication, Library, WindowsApplication |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | OT |
Parametersätze
FromSource
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromMember
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromLiteralPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-PassThru
Gibt ein System.Runtime- -Objekt zurück, das die hinzugefügten Typen darstellt. Standardmäßig generiert dieses Cmdlet keine Ausgabe. Verwenden Sie diesen Parameter, wenn Sie OutputAssembly zum Erstellen einer DLL-Datei verwendet haben und den Typ aus der neu erstellten Assembly zurückgeben möchten.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Path
Gibt den Pfad zu Quellcodedateien oder Assembly-DLL-Dateien an, die die Typen enthalten.
Wenn Sie Quellcodedateien übermitteln, kompiliert Add-Type den Code in den Dateien und erstellt eine Speicherassembly der Typen. Die im Wert von Path angegebene Dateierweiterung bestimmt den Compiler, den Add-Type verwendet.
Die Verwendung der Parameter Path oder LiteralPath garantiert, dass Sie die Assembly laden, die Sie laden möchten.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
FromPath
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-ReferencedAssemblies
Gibt die Assemblys an, von denen der Typ abhängt. Standardmäßig verweisen Add-Type verweise System.dll und System.Management.Automation.dll. Ab PowerShell 6 enthält ReferencedAssemblies- keine .NET-Standardassemblys. Sie müssen einen bestimmten Verweis darauf in den an diesen Parameter übergebenen Wert einschließen.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | RA |
Parametersätze
FromSource
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromMember
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FromLiteralPath
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-TypeDefinition
Gibt den Quellcode an, der die Typdefinitionen enthält. Geben Sie den Quellcode in eine Zeichenfolge oder hier-Zeichenfolge ein, oder geben Sie eine Variable ein, die den Quellcode enthält. Weitere Informationen zu here-Zeichenfolgen finden Sie unter about_Quoting_Rules.
Fügen Sie eine Namespacedeklaration in Ihre Typdefinition ein. Wenn Sie die Namespacedeklaration weglassen, hat der Typ möglicherweise denselben Namen wie ein anderer Typ oder die Verknüpfung für einen anderen Typ, was zu einer unbeabsichtigten Überschreibung führt. Wenn Sie z. B. einen Typ namens Exceptiondefinieren, schlagen Skripts, die Exception als Verknüpfung für System.Exception- verwenden, fehl.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
FromSource
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-UsingNamespace
Gibt weitere Namespaces an, die für die Klasse erforderlich sind. Dies ähnelt dem C#-Schlüsselwort Using.
Standardmäßig verweist Add-Type auf den System--Namespace. Wenn der MemberDefinition Parameter verwendet wird, verweist Add-Type standardmäßig auch auf den System.Runtime.InteropServices Namespace. Auf die Namespaces, die Sie mithilfe der UsingNamespace Parameter hinzufügen, wird zusätzlich zu den Standardnamespaces verwiesen.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | System namespace |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Using |
Parametersätze
FromMember
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
None
Sie können keine Objekte an dieses Cmdlet weiterleiten.
Ausgaben
None
Standardmäßig gibt dieses Cmdlet keine Ausgabe zurück.
Type
Wenn Sie den parameter PassThru verwenden, gibt dieses Cmdlet ein System.Type--Objekt zurück, das den neuen Typ darstellt.
Hinweise
Die von Ihnen hinzugefügten Typen sind nur in der aktuellen Sitzung vorhanden. Um die Typen in allen Sitzungen zu verwenden, fügen Sie sie Ihrem PowerShell-Profil hinzu. Weitere Informationen zum Profil finden Sie unter about_Profiles.
Typnamen und Namespaces müssen innerhalb einer Sitzung eindeutig sein. Sie können einen Typ nicht entladen oder ändern. Wenn Sie den Code für einen Typ ändern müssen, müssen Sie den Namen ändern oder eine neue PowerShell-Sitzung starten. Andernfalls schlägt der Befehl fehl.
In Windows PowerShell (Version 5.1 und unten) müssen Sie Add-Type für alle Elemente verwenden, die noch nicht geladen wurden. Dies gilt am häufigsten für Assemblys, die im globalen Assemblycache (Global Assembly Cache, GAC) gefunden werden.
In PowerShell 6 und höher gibt es kein GAC, sodass PowerShell eigene Assemblys in $PSHOMEinstalliert.
Diese Assemblys werden automatisch auf Anforderung geladen, daher müssen sie nicht mit Add-Type geladen werden. Die Verwendung von Add-Type darf jedoch weiterhin zulassen, dass Skripts implizit mit jeder Version von PowerShell kompatibel sind.
Assemblys im GAC können nach Typname und nicht nach Pfad geladen werden. Das Laden von Assemblys aus einem beliebigen Pfad erfordert Add-Type, da diese Assemblys nicht automatisch geladen werden können.