/ / Geek School: Erfahren Sie, wie Sie Remoting in PowerShell verwenden

Geek School: Erfahren Sie, wie Sie Remoting in PowerShell verwenden

Eine der besten Funktionen von PowerShell ist die Remoteverwaltung Ihrer Server. Sie können sogar mehrere gleichzeitig verwalten.

Lesen Sie unbedingt die vorherigen Artikel in der Reihe:

  • Erfahren Sie, wie Sie Windows mit PowerShell automatisieren
  • Lernen, Cmdlets in PowerShell zu verwenden
  • Erlernen der Verwendung von Objekten in PowerShell
  • Lernen des Formatierens, Filterns und Vergleichens in PowerShell

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

Was ist Remoting?

Die Massenverwaltung Ihrer Server kann mühsam sein.Und wenn Sie zuvor auf 50 Webservern eine IIS-Konfigurationsänderung vornehmen mussten, wissen Sie, was ich meine. In diesen Situationen können PowerShell Remoting und die Skriptfähigkeiten der Sprache Abhilfe schaffen. Über HTTP oder das sicherere HTTPS können Sie mit PowerShell Remoting Befehle an einen Remotecomputer in Ihrem Netzwerk senden. Das Gerät führt dann die Befehle aus und sendet die Ausgabe an Sie zurück, die wiederum auf Ihrem Bildschirm angezeigt wird.

Lassen Sie uns technisch werden

Im Zentrum von PowerShell Remoting steht eine einzigeDer Windows-Dienst, die Windows-Remoteverwaltung oder der WinRM-Dienst, wie er bekannt geworden ist. Mit WinRM können Sie eine oder mehrere Sitzungskonfigurationen (auch als Endpunkte bezeichnet) einrichten. Hierbei handelt es sich im Wesentlichen um Dateien, die Informationen zu der Erfahrung enthalten, die Sie der Person bereitstellen möchten, die eine Verbindung zu Ihrer Remote-PowerShell-Instanz herstellt. Im Einzelnen können Sie mithilfe von Sitzungskonfigurationsdateien definieren, wer eine Verbindung zur Instanz herstellen kann und wer nicht, welche Cmdlets und Skripts sie ausführen können und unter welchem ​​Sicherheitskontext die Sitzung ausgeführt werden muss. Mit dem WinRM-Dienst richten Sie auch "Listener" ein, die auf eingehende PowerShell-Anforderungen warten. Diese "Listener" können entweder HTTP oder HTTPS sein und an eine einzelne IP-Adresse auf Ihrem Computer gebunden sein. Wenn Sie eine PowerShell-Verbindung zu einem anderen Computer herstellen (technisch erfolgt dies mithilfe des auf HTTP basierenden WS-MAN-Protokolls), wird die Verbindung an einen dieser „Listener“ gebunden. Die "Listener" sind dann dafür verantwortlich, den Datenverkehr an die Anwendung zu senden, die der entsprechenden Sitzungskonfigurationsdatei zugeordnet ist. Die Anwendung (normalerweise PowerShell, Sie können jedoch auch andere Hosting-Anwendungen verwenden, wenn Sie dies möchten) führt dann den Befehl aus und leitet die Ergebnisse über den Listener über das Netzwerk zurück auf Ihren Computer.

Zeig mir wie

Als Erstes müssen Sie Remoting auf dem Computer aktivieren, zu dem Sie eine Verbindung herstellen möchten. Dies kann folgendermaßen geschehen:

PSRemoting aktivieren

Bild

Sie müssen dann auf alle Eingabeaufforderungen mit Ja antworten. Wenn Sie Enable-PSRemoting ausführen, werden einige Änderungen an Ihrem PC vorgenommen:

  • Der WinRM-Dienst wird gestartet.
  • Der WinRM-Dienst wechselt vom manuellen Startmodus zu Automatisch.
  • Es wird ein HTTP-Listener erstellt, der an alle Ihre Netzwerkkarten gebunden ist.
  • Außerdem wird eine eingehende Firewall-Ausnahme für das WS-MAN-Protokoll erstellt.
  • Einige Standardsitzungskonfigurationen werden erstellt

Wenn Sie Windows 7 und Ihr Netzwerk ausführenDer Speicherort der Karte ist auf "Öffentlich" festgelegt, und das Aktivieren von PowerShell Remoting schlägt fehl. Um das Problem zu beheben, wechseln Sie einfach zum Netzwerkspeicherort "Privat" oder "Geschäftlich". Alternativ können Sie die Netzwerkprüfung folgendermaßen überspringen:

Enable-PSRemoting –SkipNetworkProfileCheck

Bild

Wir empfehlen jedoch, den Netzwerkstandort zu ändern.

Es gibt zwei Möglichkeiten, mit PowerShell eine Verbindung zu einem anderen Computer herzustellen. Es gibt die Eins-zu-Eins-Methode, die der Verwendung von SSH sehr ähnlich ist, und dann die Eins-zu-Viele-Methode.

Verwenden einer PowerShell-Sitzung

Die erste Möglichkeit, eine Verbindung zu einem Remote-Computer herzustellenBeim Verwenden von PowerShell wird eine sogenannte PowerShell-Sitzung verwendet. In einer einfachen Sitzung können Sie Befehle auf dem Remote-Computer auf interaktive Weise ausführen, ähnlich wie auf Ihrem eigenen Computer. Um eine Sitzung zu eröffnen, geben Sie einfach Folgendes ein:

Enter-PSSession - Computername "Darlah"

Bild

Die Eingabeaufforderung erhält ein Präfix, das den Computer kennzeichnet, auf dem Sie die Cmdlets ausführen.

Bild

Von hier aus können Sie die Eingabeaufforderung wirklich so behandeln, als würden Sie an der Remote-Maschine sitzen. Wenn Sie beispielsweise alle Dateien auf dem Laufwerk C: anzeigen möchten, können Sie Folgendes tun:

Get-ChildItem –Path C:

Bild

Wenn Sie einen Linux-Hintergrund haben, können Sie sich vorstellen, diese Eins-zu-Eins-Remotemethode als PowerShell-Alternative zu SSH zu verwenden.

Aufruf-Befehl verwenden

Die zweite Möglichkeit, PowerShell auf einer Fernbedienung zu verwendenMaschine ist mit Invoke-Command. Der Vorteil von Invoke-Command liegt darin, dass Sie denselben Befehl auf mehreren Rechnern gleichzeitig ausführen können. Wie Sie sich vorstellen können, ist dies besonders nützlich, wenn Sie Ereignisprotokolle von Ihren Servern erfassen möchten. Invoke-Command folgt der folgenden Syntax:

Invoke-Command -ComputerName Darlah, localhost -ScriptBlock {Get-EventLog Application -Newest 2}

Bild

Da der Befehl auf allen Rechnern parallel ausgeführt wird, müssen Sie feststellen, von welchem ​​PC ein bestimmtes Ergebnis stammt. Sie können dies tun, indem Sie sich die PSComputerName-Eigenschaft ansehen.

Bild

Wenn Sie Invoke-Command verwenden, haben Sie nicht mehrdie Objekte, die Sie möglicherweise in der Pipeline erwarten. Damit PowerShell die Informationen vom Remotecomputer wieder auf Ihren Computer übertragen kann, müssen die Objekte, die der Befehl auf dem Remotecomputer ausgeführt hat, in gewisser Weise dargestellt werden. Heutzutage scheint die gewählte Art, eine hierarchische Datenstruktur darzustellen, die Verwendung von XML zu sein. Wenn Sie also einen Befehl mit Invoke-Command absetzen, werden die Ergebnisse zunächst in XML serialisiert, bevor sie an Ihren Computer zurückgesendet werden. Sobald sie zu Ihrem Computer zurückkehren, werden sie wieder in ein Objekt deserialisiert. Wenn sie deserialisiert werden, werden alle Methoden mit Ausnahme der ToString () -Methode, die das Objekt hatte, von ihm entfernt.

Bild

Hinweis: Es gibt einige Ausnahmen von dieser Regel, zum Beispiel können die meisten primitiven Typen wie Ganzzahlen mit ihren eingeschlossenen Methoden deserialisiert werden. Es gibt auch einen Prozess namens Rehydration, bei dem einige Methoden wieder zu deserialisierten Objekten hinzugefügt werden können. Also sei vorsichtig und denke daran, dass Get-Member dein Freund ist.

Hausaufgaben

  • Lesen Sie die Geheimnisse von PowerShell Remoting eBook von Don Jones.