Windows PowerShell: Gemeinsame Nutzung der Scripts - leicht gemacht

Don Jones

Ein Nachteil von Windows PowerShell v1 ist es viel einfacher freigeben Skript nicht durchgearbeitet haben. Sicher, Sie können problemlos eine ps1-Skriptdatei auf einen anderen Computer kopieren oder sogar zip-es nach oben und per e-mail an einen Kollegen, aber Sie könnten dazu mit VBScript mehr als einem Jahrzehnt vor. Wenn Ihr Skript wiederverwendbare Funktionen enthalten, jedoch jeder von Ihnen empfangenen müsste wissen, wie Sie Punkt-Quelle, oder würden Domänenressource bis tatsächlich ändern, um diese Funktionen ausführen zu müssen.

Es wurde alles in allem eine akzeptable Situation – selbst wenn die ideale war nicht. Die Situation geworden für Skripts, die zusammen mit benutzerdefinierten Format Ansichten oder Erweiterungen des Typs wurden weniger akzeptabel ist, da diese zusätzlichen Dateien manuell in die Shell geladen werden, um vom Skript verwendet werden musste.

Mit Windows PowerShell v2 haben jedoch wir in einer nahezu ideale Situation Dank an die Einführung von Modulen verschoben.

Self-contained Anpassungsgüte des Shell-Segmenten

A Modul ist einfach eine Sammlung von Dateien, die zueinander. Es gibt zwei Hauptkategorien von Modulen: Binäre und Script.

A Binärdatei Modul besteht aus einem oder mehreren DLL-Dateien, die aus einer Microsoft .NET Framework-Sprache wie c# oder Visual Basic kompiliert werden. In den v1-Tagen wir diese PSSnapins aufgerufen, und Schreiben tatsächlich eine in Visual Studio noch nicht geändert viel. SnapIns, benötigt jedoch, dass auch ein Installationsprogramm zum Registrieren der DLL mit der Shell schreiben. Mit einem Modul ist keine Installation notwendig. Stattdessen wird das Modul durch eine .psd1-Datei zusammen – eine Modul-Manifest. Das Manifest ist einfach einige XML-Code, der angibt, welche DLLs geladen werden soll. Das Manifest kann auch zugehörigen Dateien vom Typ Erweiterung (.ps1xml) angeben oder Anzeigen von Dateien (. format.ps1xml).

Hier ist, wie es funktioniert: Das Modul muss in einem Unterverzeichnis im Ordner \modules Windows PowerShell installiert sein. Standardmäßig ist dies in c:\windows\system32\windowspowershell\v1.0\modules. Daher würde ein Modul mit dem Namen “ MyModule gesucht ” in c:\windows\system32\windowspowershell\v1.0\modules\mymodule wechseln und die Manifestdatei wäre mymodule.psd1. In diesem Ordner halten alles eigenständig würden normalerweise alle Dateien, die im Zusammenhang mit dem Modul gruppiert werden.

Das Modul nicht laden, führen Sie einfach Import-Modul MyModule gesucht. Die Shell sucht im Ordner "\modules" in der Standardeinstellung (obwohl Sie können auch einen vollständigen Pfad übergeben, um Import-Modul Wenn das Modul an anderer Stelle gespeichert ist), erkennt, dass eine .psd1-Datei vorhanden ist, liest er und lädt die Dateien auf die in verwiesen wird. Verteilen das Modul ist einfach: Nur Zip alle Dateien und die ZIP-Datei auf einen anderen Computer kopieren – keine Installation notwendig.

Drehen eines eigenen Module

Wie wird diese Hilfe verteilen Sie Ihre Skripts einfacher? Der zweite Typ des Moduls, einer Skript-Modul, ist die Antwort. Dies ist einfach ein normales Windows PowerShell-Skript, mit der .psm1-Dateinamenerweiterung statt der üblichen PS1-Dateinamenerweiterung. Platzieren in den Ordner \modules mymodule.psm1 ermöglicht das Ausführen von Import-Modul MyModule gesucht und Ihr Skript wird ausgeführt.

Normalerweise besteht ein Skript-Modul vollständig von Funktionen. Das heißt, wenn das Modul importiert wird, nichts tatsächlich ausführt – die Funktionen in den Skript-Modul in der Shell geladen werden und werden in der gesamten Shell verfügbar. Genommen Sie an, Sie haben ein Skript-Modul, die etwa folgendermaßen aussieht:

Function Get-Inventory {
 # (some code goes here)
}
Function Test-Connectivity {
 # (some code goes here)
}
Function Write-Inventory {
 # (some code goes here)
}

In dieser Unterrichtseinheit importieren würden vornehmen.Get-Lager, Test-Konnektivität and Schreibzugriff-Lager Funktionen zur Verfügung, während die Shell, ähnlich wie bei Cmdlets (tatsächlich im nächsten Monat ich werde zeigen, wie Sie eine Funktion schreiben, die fast genau wie ein “ echte ” Cmdlet verhält). Ihre Funktionen können auch Kommentar-basierte Hilfe einschließen (was ich in veranschaulichtenmeinem letzten Artikel), sodass jemand importieren das Modul konnte, und führen Helfen Sie Get-Lager um Anweisungen zur Verwendung dieser Funktion finden Sie unter.

Manchmal möchten Sie ein kleiner Datenschutz

Manchmal müssen Sie möglicherweise ein komplexes Skript-Modul, die Funktionen, die von einem Benutzer, sondern nur durch andere Funktionen verwendet werden soll. Ich könnte z. B. beabsichtigen.Test-Konnektivität and Schreibzugriff-Lager den “ private ” für das Modul. Das bedeutet, dass Sie aufgerufen werden würde, indem Get-Lager, aber nicht direkt von einem Benutzer der Shell aufgerufen werden erwartet.

In der Standardeinstellung Import-Modul imports Alles im Modul wird jede Funktion wieder an den Shell-Benutzer sichtbar. Sie können dieses Verhalten überschreiben, indem Sie einfach eine Liste der Funktionen beabsichtigen sichtbar; ansonsten wird von der Shell Benutzer ausgeblendet. Führen Sie dazu einfach Export-ModuleMember am Ende des Moduls Skript:

Export-ModuleMember-–function Get-Lager

Sie können auch Cmdlets, Variablen und Aliase, die Ihr Skript definiert, bei Bedarf exportieren. Run Helfen Sie Export-ModuleMember or see Export-ModuleMember für weitere Details.

Modul-Nachteile

Für mich nur Bummer über v2 Module besteht darin, dass die Shell schien haben nur einen Standardspeicherort für diese, und dieser Speicherort befindet sich unter der Windows-Systemordner – das ist nicht etwas Gewohnheit ändern, abgerufen werden sollen. Aber dann ich die PSModulePath-Umgebungsvariable wurde betrachtet und festgestellt, dass die Shell sucht außerdem in Ihrem Ordner "Dokumente" unter "einen Unterordner namens <a0>WindowsPowerShell\Modules</a0>, und hierbei handelt es sich, wo ich jetzt alle Module behalten ich schreibe.

In der Zukunft sehen Sie möglicherweise auch Cmdlets, die so konzipiert, dass zusätzliche Module von Repositorys im Gegensatz zu den Birne-Funktionalität in UNIX-Systemen verwendeten Internet herunterladen. Solche Cmdlets wäre eher auf den Ordner "Dateien" oder einem anderen Speicherort für nicht-Betriebssystem zu downloaden, und die Shell suchen den Ordner Dateien für Module ist eine intelligente Standard.

Module, Module, Diktatfunktionalität

Da diese Don ’t ist eine Installation zu “ von der Shell angezeigt werden ” Module verwendet werden, sehr viel mehr. In der Tat ist fast jeder Windows PowerShell-Erweiterung in Windows Server 2008 R2 als Modul verpackt – die einzige Ausnahme PSSnapin für die Automatisierung von Windows Server-Sicherung ( ausgeführt wirdGet-PSSnapin-–registered, ob es auf einem Server installiert ist). Weitere Fremdanbieter-Code wird als Module, zu, einschließlich der Cmdlets, die Zugriff auf das Repository Community Code unter geliefert wirdPoshCode.org.

In der Tatsache, wenn Sie ein hartgesottenen Windows PowerShell-Benutzer, die eigene Cmdlets schreiben interessiert sind, möchten jedoch nicht in .NET Framework-Programmierung in Visual Studio, die Kombination von erweiterten Funktionen untersuchen (wieder, werden des nächsten Monats) und Modulen bietet Ihnen die Möglichkeit, eigene Shell “ Snapins ” vollständig in Skript zu schreiben. Einfach Verpacken Sie erweiterten Funktionen – das Aussehen und Verhalten Cmdlets – in ein Skript Modul, und Sie verfügen über ein easy-to-distribute Bibliothek von wiederverwendbarem Code.

Windows PowerShell v2 Generally jetzt verfügbar

Obwohl es mit Windows Server 2008 R2 und Windows 7, Windows PowerShell v2 vorinstalliert geliefert – und die zugehörigen Begleit Management-Framework-Komponenten – ist jetzt für Windows XP, Windows Server 2003, Windows Vista und Windows Server 2008 verfügbar. Besuchen Sie einfach die Support.Microsoft.com/kb/968929 den Downloadlink für beliebige Betriebssystem zu erhalten, die Sie verwenden. In den meisten Fällen sollte dies mit Ihrer Skripts v1 kompatibel sein; meinen zukünftigen Artikeln davon aus, dass Sie 2.0 verwenden.

Don Jones * ist eine Gründer von Concentrated Technology und Antworten Fragen zu Windows PowerShell und andere Technologien am * ConcentratedTech.com. Er ist auch ein Autor für Nexus.Realtimepublishers.com, wodurch viele zu seinen Büchern als kostenloser elektronischer Editionen verfügbar.

Verwandter Inhalt

·      Windows PowerShell: PowerShell und Active Directory

·      Windows PowerShell: Filter links, Format rechts

·      Windows PowerShell: Bleiben Sie sitzen