Zum Hauptinhalt springen

Typen und Assemblys laden

Eine ganze Reihe von Klassen werden von Powershell beim Starten automatisch geladen.Manche müssen aber erst geladen werden, bevor man sie verwenden kann, da Powershell nur häufig verwendete Typen bereitstellt. Die einfache Ein-Button-GUI z.B. läuft nicht, wenn sie direkt aus der Powershell aufgerufen wird. Das liegt daran, dass die Windows-Forms-Erweiterungen von Powershell nicht automatisch geladen werden – das erledigt erst die ISE, die die Forms-Bibliothek selbst verwendet. Sie können in Ihren Skripten Typen mit dem Cmdlet Add-Type aber selbst nachladen. Für das Forms-Skript fügen Sie am in der ersten Zeile folgende Code-Zeile hinzu:

Add-Type -AssemblyName System.Windows.Forms

Eine Assembly ist eine Datei, die .net Code enthält, der beim Kompilieren im .net Compiler nicht automatisch zu einem ausführen Programm gemacht wird. Sie werden als Bibliotheken bei Bedarf nachgeladen und kommen Form von DLLs (Dynamic Link Library). Viele Klassen können aus dem GAC (Global Assembly Cache) direkt nachgeladen werden. Manchmal bekommen Sie aber auch Assemblys in Form von .dll-Dateien, die Sie direkt aus dem Dateisystem nachladen müssen. Dann geben Sie mit dem Parameter -Path von Add-Type den Pfad zur Datei an, die geladen werden soll. Hier am Beispiel WinScp, einer .NET-Bibliothek zum Übertragen von Dateien per FTP oder SFTP:

Add-Type -Path 'C:\Assemblies\WinSCPnet.dll'

Der Fehlercode 0x80131515 beim Laden ist eine Sicherheitsfunktion, die verhindert, dass DLLs direkt aus einer Freigabe oder aus dem Internet geladen werden. Sollte das Laden bei Ihnen fehlschlagen, stellen Sie sicher, dass die Datei nicht als "nicht vertrauenswürdig" markiert ist.

Image 110

Sie können das "Mark of the Web" auch mit Powershell entfernen:

Unblock-File -Path C:\Assemblies\WinSCPnet.dll

Wenn Sie tiefer in das Thema Assemblies einsteigen möchten, lesen Sie Assemblies in .NET.