Startseite » wie man » Geek School Erfahren Sie, wie PowerShell erweitert wird

    Geek School Erfahren Sie, wie PowerShell erweitert wird

    PowerShell bietet zwei Möglichkeiten, die Shell zu erweitern. Sie können entweder Snapins verwenden, die nur binär sind und in einer voll entwickelten Programmiersprache wie C # entwickelt wurden, oder Sie können Module verwenden, die sowohl binär als auch skriptbasiert sein können.

    Lesen Sie unbedingt die vorherigen Artikel der Serie:

    • Erfahren Sie, wie Sie Windows mit PowerShell automatisieren
    • Verwenden von Cmdlets in PowerShell
    • Informationen zum Verwenden von Objekten in PowerShell
    • Lernen Sie das Formatieren, Filtern und Vergleichen in PowerShell
    • Informationen zum Verwenden von Remoting in PowerShell
    • Verwenden von PowerShell zum Abrufen von Computerinformationen
    • Arbeiten mit Sammlungen in PowerShell

    Und bleiben Sie die ganze Woche für den Rest der Serie dran.

    Snapins

    Snapins sind so letztes Jahr. Abgesehen von allen Witzen haben sich Snapins in der PowerShell-Community nie wirklich durchgesetzt, da die meisten Scripter keine Entwickler sind und Sie nur Snapins in einer Sprache wie C # schreiben können. Trotzdem gibt es immer noch einige Produkte, die Snapins verwenden, wie zum Beispiel Web Deploy. Um zu sehen, welche Snapins für die Verwendung in der Shell verfügbar sind, verwenden Sie den folgenden Befehl:

    Get-PSSnapin -registriert

    Um die von einem Snapin hinzugefügten Befehle verwenden zu können, müssen Sie ihn zuerst in Ihre Sitzung importieren. Dies können Sie wie folgt tun:

    Add-PSSnapin -Name WDeploySnapin3.0

    An diesem Punkt wird eine Fehlermeldung angezeigt, wenn das Web Deploy-Snapin nicht installiert ist. Wenn Sie es wie ich installiert haben, wird es in Ihre Sitzung importiert. Um eine Liste der im Snapin verfügbaren Befehle zu erhalten, können Sie einfach das Cmdlet Get-Command verwenden:

    Get-Command -Module WDeploy *

    Hinweis: Technisch ist dies kein Modul, aber aus irgendeinem Grund müssen Sie immer noch den Parameter Module verwenden.

    Module

    Module sind neuer und sind der Weg nach vorne. Sie können sowohl mit PowerShell als auch mit einer Sprache wie C # codiert werden. Die meisten der integrierten Befehle sind ebenfalls in Modulen organisiert. Um eine Liste der Module auf Ihrem System anzuzeigen, können Sie den folgenden Befehl verwenden:

    Get-Module -ListAvailable

    Wenn Produkte aktualisiert werden, werden ihre PowerShell-Pendants zu Modulen migriert. Zum Beispiel hatte SQL früher ein Snapin, aber es besteht jetzt aus Modulen.

    Um ein Modul verwenden zu können, müssen Sie es zuerst importieren.

    Import-Modul -Name SQLASCMDLETS

    Sie können denselben Trick verwenden, den wir mit Snapins verwendet haben, um alle Befehle anzuzeigen, die das Modul der Shell hinzugefügt hat.

    Somit bleibt die Frage offen: Woher weiß PowerShell, welche Snapins und Module Sie auf Ihrem System haben? Nun, Snapins sind ein bisschen schmerzhaft und müssen installiert werden. Ein Teil des Installationsvorgangs umfasst das Erstellen einiger Registrierungseinträge, in denen PowerShell nach Snapin-Informationen sucht. Module können dagegen bei der Shell registriert werden, indem sie einfach an einer der Stellen in der Umgebungsvariablen PSModulePath platziert werden. Alternativ können Sie einfach den Pfad zum Modul zur Umgebungsvariablen hinzufügen.

    ($ env: PSModulePath) .Split (";")

    Dadurch wird der Inhalt der Variablen ausgespuckt. Wenn Sie ein Modul wie SQL installiert haben, ändern Sie die Variable so, dass sie den Speicherort des SQL-Moduls enthält.

    Modul automatisch laden

    In PowerShell 3 wurde eine großartige neue Funktion eingeführt, deren Namen einige Namen haben. Keiner von ihnen ist offiziell, aber "Modul Auto Loading" ist die beste Beschreibung davon. Grundsätzlich können Sie Cmdlets verwenden, die zu einem externen Modul gehören, ohne das Modul explizit mit dem Cmdlet Import-Module importieren zu müssen. Um dies zu sehen, entfernen Sie zunächst alle Module mit dem folgenden Befehl aus Ihrer Shell:

    Get-Modul | Remove-Modul

    Sie können dann überprüfen, ob keine Module geladen sind, indem Sie Folgendes verwenden:

    Get-Modul

    Verwenden Sie jetzt ein Cmdlet, das sich nicht in der Core-Bibliothek befindet. Testverbindung ist gut:

    Testverbindung Localhost

    Wenn Sie Ihre geladenen Module erneut prüfen, werden Sie feststellen, dass das Modul tatsächlich geladen wurde.

    Das ist alles für heute, Jungs, morgen für mehr.