2011-01-13 8 views
2

Aus Gründen der Skriptportabilität muss ich Snap-Ins dynamisch in einem PowerShell-Skript laden. Dies ist in PowerShell v2 mit der Funktion Load-Module problemlos möglich. Ich muss dieses bestimmte Skript auf einem Computer ausführen, wo ich PowerShell v2 aus verschiedenen Gründen nicht installieren möchte, aber v1.Lastmodul in PowerShell v1

Gibt es eine Load-Module Entsprechung in PowerShell v1?

+0

Sie können versuchen, http://serverfault.com/ – Rune

Antwort

3

Meinst du Import-Module? Wenn ja, hängt es davon ab, wie das Modul definiert ist. Wenn es ein Snapin-DLL ist, dann müsste das Snapin auf dem V1-Rechner installiert werden und dann würden Sie Add-PSSnapin verwenden. Wenn es in .psm1 Datei ist, dann müssten Sie die Datei in .ps1 umbenennen und dann könnten Sie versuchen, es z. . .\mymodule.ps1. Wenn Sie jedoch eine v2-Funktion wie Export-ModuleMember verwenden, müssen Sie diese auskommentieren. Und v1 würde nicht wissen, was mit einer .psd1 Datei zu tun ist.

+0

Ich möchte nicht das Snap-In auf der Maschine v1 installieren. Gibt es keine Möglichkeit, das Snap-In dynamisch in Version 1 zu laden? – friism

+2

Es gibt keine Möglichkeit, ein Snapin in Ihre Sitzung in V1 zu importieren, ohne es zuerst (als Administrator) auf dem GAC zu installieren. Sie können Assemblys und Bibliotheken laden, die Cmdlets werden jedoch nur als .NET-Klassen angezeigt. – Jaykul

+0

Die primäre Sache Installation ist das Erstellen einer Reihe von Registrierungseinträgen, so dass PowerShell die Snapin-DLL finden kann. Ich nehme an, dass Sie die Registrierungseinträge möglicherweise mit einem Skript (oder einer .reg-Datei) wiederherstellen können. –

1

Import-Module lädt Module und Module sind nur eine V2-Funktion.

PowerShell V1 hatte "Snap-Ins", geschrieben in einer .NET-Sprache (C#, VB, ...), aber nicht PowerShell-Skript und geladen in einer Sitzung mit Add-PSSnapin (Snap-Ins werden auch in V2 unterstützt, aber Module haben eine Obermenge von Snap-In-Fähigkeiten, also bleiben Sie bei Modulen, es sei denn, es ist unmöglich, auf V2 zu aktualisieren).