Das PowerShell 2.0 SDK

Das PowerShell 2.0 SDK besteht lediglich aus einer Sammlung von (insgesamt 45) Beispielprojekten in C#, die zeigen wie z.B. Cmdlets programmiert, die PowerShell in einer Anwendung gehostet oder ein Remote-Runspace angelegt wird. Alles hochinteressant, aber nicht für den reinen Anwender sondern für Entwickler, die PowerShell-Funktionalitäten in ihre Anwendungen einbauen oder PowerShell-Komponenten wie Cmdlets oder Provider entwickeln möchten.

Das PowerShell-SDK ist auch nicht (mehr) Teil des Windows SDKs, sondern ein eigener Download:

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=50633a1f-a665-425d-923c-1a269f8ac084

Die Assembly System.Management.Automation.dll, die den größten Teil der PowerShell-Funktionalität enthält, ist nicht Teil des SDKs, sie wird mit der PowerShell 2.0 installiert. Allerdings wird sie nicht (mehr) im PowerShell-Home-Verzeichnis, sondern im GAC (Global Assembly Cache) ablegt. Der Verzeichnisname ist etwas lang:

C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35

Ein „wenig“ irritierend ist der Umstand, dass die Assembly intern noch die Version 1.0 trägt.

Der folgende (PowerShell-) Befehl listet den Pfad der DLL auf:

[System.Appdomain]::CurrentDomain.GetAssemblies() | Where-Object {$_.FullName -match „System.Management.Automation“  } | Select Location

Für Entwickler, die diese DLL in ein Projekt einbinden möchte, gilt immer noch der Tipp, dass, da sie sich beim Hinzufügen eines Verweises (aus irgendwelchen Gründen) nicht direkt auswählen lässt, sie die Csproj-Projektdatei z.B. mit Notepad öffnen und den Verweis direkt einfügen:

<Reference Include=“System.Management.Automation.dll“ />

Dadurch wird beim Kompilieren automatisch die Dll aus dem GAC eingebunden.

Alternativ kann die DLL auch direkt in ihrem Verzeichnis referenziert werden:

<Reference Include=“$(ProgramFiles)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll“ />

Hinterlasse einen Kommentar