Wie erstelle ich Powershell 2.0 Module?

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 online zu sein ...

Aber ich bekomme immer weiter "Der Begriff 'Add-Module' wird nicht als Cmdlet erkannt ..." wenn ich ein Modul versuche und lade.

Jede Hilfe wäre dankbar erhalten!

Bearbeiten (Juli 2010) Bitte beachten Sie, dass diese Frage auf Powershell 2.0 CTP basiert und somit eineinhalb Jahre veraltet ist! Bitte lesen Sie die Antwort von Samuel Jack für Hilfe mit dem Powershell 2.0 RTM.

    
Chris Haines 04.12.2008, 17:10
quelle

5 Antworten

9

Mit dem Win7-Build ist Add-Module weg. 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.

    
Andy Schneider 12.12.2008, 15:57
quelle
3

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

Angenommen, Sie möchten ein Modul mit dem Namen MyModule erstellen:

  1. Stellen Sie sicher, dass Sie den Ordner % Eigene Dateien% \ WindowsPowershell \ Modules erstellt haben
  2. Erstellen Sie einen Ordner innerhalb von Modulen namens MyModule
  3. Setzen Sie Ihren Code in eine Datei innerhalb von MyModule und benennen Sie die Datei MyModule.psm1
  4. Denken Sie daran, den Befehl Export-ModuleMember als letztes in Ihrer Skriptdatei zu verwenden. Export-ModuleMember -Function * -Alias * exportiert alle Funktionen und Aliase
  5. In Skripten, in denen Sie das Modul verwenden möchten, verwenden Sie den Befehl Import-Module MyModule

Standardmäßig ist Powershell so konfiguriert, dass keine Skripts aus Dateien ausgeführt werden. Daher müssen Sie die Sicherheitseinstellungen ändern. Set-ExecutionPolicy Unrestricted bringt Sie in Schwung, wenn Sie nicht besorgt sind, dass Skripte signiert werden müssen.

    
Samuel Jack 16.07.2010 11:57
quelle
2

Hier ist ein bisschen Information. Ссылка

Ссылка

Hoffen wir, dass das kommende CTP3 eine nützliche Dokumentation über Module enthält.

    
Martin 04.12.2008 18:38
quelle
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, die ein Endbenutzer möglicherweise nicht direkt benötigt / braucht, verschmutzen kann.

Module ermöglichen es Ihnen als Autor, Skripte zu erstellen und nur bestimmte Funktionen / Variablen für den Endbenutzer des Moduls verfügbar zu machen.

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 das sogenannte Modulmanifest. 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 es alle Abhängigkeiten und führt alle Skripts aus, die der Modulautor für notwendig hält.

Es sollte eine anständige Dokumentation darüber geben, wenn CTP3 ausgeliefert wird.

Hoffe, dass hilft ein bisschen.

Andy

    
Andy Schneider 12.12.2008 01:52
quelle
0

Windows PowerShell v2.0: TFM (sapienpresse.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.

    
Don Jones 04.12.2008 19:50
quelle

Tags und Links