2008-12-04 6 views
8

Ich habe gehört Powershell 2.0 CTP hat Module, aber ich kann nicht viel Beispielcode oder Anweisungen finden. Ich habe gelesen, welche kleine Hilfe scheint es online zu sein ...Wie erstelle ich Powershell 2.0-Module?

Aber ich bekomme immer wieder "Der Begriff 'Add-Module' wird nicht als Cmdlet erkannt ...", wenn ich versuche, ein Modul zu laden.

Jede Hilfe wäre dankbar erhalten!

bearbeiten (Juli 2010) Bitte beachten Sie, diese Frage auf Powershell 2.0 CTP basiert und somit ein Jahr und die Hälfte nicht mehr aktuell! Bitte lesen Sie die Antwort von Samuel Jack für Hilfe mit dem Powershell 2.0 RTM.

+0

Warten Sie nur ein paar Wochen und Ihre Wünsche werden mit CTP3 wahr werden. – halr9000

Antwort

9

Mit dem Win7 bauen, Add-Modul ist verschwunden. Das neue Cmdlet ist Import-Modul. Die einfachste Methode zum Erstellen eines Moduls besteht darin, eine PS1-Datei in eine PSM1-Datei umzubenennen. Von dort aus können Sie alle möglichen Dinge tun, einschließlich des Modulmanifests.

+0

Import-Modul funktioniert auch nicht. Tatsächlich gibt es keine Befehle, die das Wort Modul enthalten: gcm | ? {$ _. Name.Contains ("Modul")} | fl Name Oh gut ich werde bis CTP 3 warten, um mehr herauszufinden! –

0

Windows PowerShell v2.0: TFM (sapienpress.com) enthält Informationen und Beispiele in einem der Kapitel. Es ist als E-Book verfügbar, das aktualisiert wird, sobald neue CTPs veröffentlicht werden. Ich habe auch über ConcentratedTech.com über sie gebloggt, und es gab Diskussionen auf PowerShellCommunity.org in den Foren.

1

Module werden hoffentlich ein paar Probleme lösen. Im Moment können wir mit dot sourcing Funktionen, Variablen und Skripts in den globalen Bereich einer PowerShell-Sitzung integrieren.

Das Problem ist, dass dies Ihre Sitzung mit allen Arten von globalen Variablen und Hilfsfunktionen verschmutzen kann, die ein Endbenutzer nicht direkt brauchen/brauchen möchte.

Module ermöglichen es Ihnen als Autor, Skripte zu erstellen und bestimmte Funktionen/Variablen nur dem Endbenutzer des Moduls zur Verfügung zu stellen.

Sie ersetzen auch im Wesentlichen das Konzept eines PSSnapin. Sie können Add-Module Some.dll verwenden, um eine Assembly hinzuzufügen, die Cmdlets enthält.

Was wirklich cool ist, ist ein sogenanntes Modul Manifest. Dies ist eine Hash-Tabelle, die im Grunde alle Arten von Abhängigkeiten sowie Autor, Name, GUID-ID und Versionsnummer angibt. Wenn ein Benutzer ein Modul mit einem Modulmanifest lädt, prüft er alle Abhängigkeiten und führt alle Skripte aus, die der Modulautor für notwendig hält.

Es sollte etwas anständige Dokumentation auf diesen sein, wenn CTP3 versendet.

Hoffe, dass hilft ein bisschen.

Andy

3

Ich bin kein Powershell-Experte, aber hier ist, was ich gerade mit PowerShell 2.0 RTM herausgefunden habe.

Angenommen, Sie ein Modul MyModule genannt erstellen möchten:

  1. Vergewissern Sie sich, dass Sie erstellt haben, den Ordner % Eigene Dateien% \ Windows \ Modules
  2. Erstellen Sie einen Ordner innerhalb Module genannt MyModule
  3. Setzen Sie Ihren Code in eine Datei innerhalb MyModule und n ame die Datei MyModule.psm1
  4. Denken Sie daran, den Befehl Export-ModuleMember als letztes in Ihrer Skriptdatei zu verwenden. Export-ModuleMember -Function * -Alias * werden alle Funktionen exportieren und Aliase
  5. In Skripten, wo Sie das Modul verwenden möchten, verwenden Sie den Befehl Import-Module MyModule

standardmäßig Powershell konfiguriert ist, nicht alle Arten von Scripts aus Dateien ausführen können, so dass Sie ändern müssen die Sicherheitseinstellungen. Set-ExecutionPolicy Unrestricted bringt Sie in Schwung, wenn Sie nicht besorgt sind, dass Skripte signiert werden müssen.