PSRemoting aktivieren: Lokale und Remote-Techniken

Obwohl PSRemoting unter Windows standardmäßig aktiviert ist, ist es nicht immer aktiviert. Wenn Sie entweder testen müssen, ob PSRemoting aktiviert ist, oder PSRemoting unter Windows aktivieren möchten, ist dieses Tutorial für Sie.

In diesem Tutorial werden Ihnen viele verschiedene Möglichkeiten gezeigt, wie Sie PSRemoting auf lokalen und entfernten Computern unter Windows aktivieren können.

Legen wir los!

Das Aktivieren von PSRemoting erfordert einiges

Wenn Sie zum ersten Mal von PowerShell Remoting hören, könnten Sie denken, dass das Aktivieren nur aus einem einzigen Befehl besteht. Vielleicht haben Sie einige Verweise auf das Enable-PSRemoting-PowerShell-Cmdlet gesehen und denken, dass es ausreicht, dies auszuführen und damit irgendwo einen Schalter umzulegen. Sie liegen falsch.

Wenn Sie vom Aktivieren von PSRemoting hören, müssen im Hintergrund viele Aufgaben erledigt werden, um dies zu ermöglichen. Da PowerShell Remoting von anderen Systemen abhängt, müssen einige Voraussetzungen erfüllt sein.

Zum Beispiel werden unter Windows beim Ausführen des Enable-PSRemoting-Cmdlets ohne Parameter alle folgenden Aufgaben ausgeführt:

  1. Der WinRM-Dienst wird gestartet und auf automatischen Start festgelegt.
  2. Es wird ein Listener auf den Standard-WinRM-Ports 5985 für HTTP-Verkehr erstellt.
  3. Die Firewall-Ausnahmen für WS-Management werden aktiviert.
  4. Die PowerShell-Sitzungskonfigurationen werden bei WS-Management registriert.
  5. Die PowerShell-Sitzungskonfigurationen werden aktiviert.
  6. Legt die PowerShell-Remotesitzungen so fest, dass der Remotezugriff ermöglicht wird.
  7. Startet den WinRM-Server neu, um alle Änderungen anzuwenden.

Bist du nicht froh, dass du das nicht alles manuell machen musst? Warum erwähnen wir das, wenn der Befehl Enable-PSRemoting alles erledigt? Weil es Zeiten geben wird, in denen etwas nicht funktioniert und du herausfinden musst, was passiert.

Standardmäßige PSRemoting-Einstellungen unter Windows

Da PSRemoting in Windows geboren wurde, ist es standardmäßig aktiviert, aber nicht universell und auch nicht für alle Windows-Betriebssystemversionen.

Auf allen Windows-Client-Betriebssystemen ist PSRemoting immer deaktiviert.

Auf Windows Server ist PSRemoting manchmal aktiviert, aber nicht immer, je nachdem, unter welchem Netzwerkprofil Windows läuft. Unten findest du eine praktische Tabelle, die dir dabei hilft festzustellen, ob PSRemoting in deinem Windows-Betriebssystem aktiviert ist oder nicht.

Operating System Network Profile PSRemoting
Windows Server 2008 R2 Domain/Private Disabled
Windows Server 2008 R2 Public Disabled
Windows Server 2012 & Newer Domain/Private Enabled
Windows Server 2012 & Newer Public Enabled within the same subnet

Auf der anderen Seite ist Linux einfach. PSRemoting ist nicht einmal vorhanden! Selbst PowerShell ist standardmäßig nicht installiert. Wenn du PSRemoting auf Linux ausführen möchtest, musst du es einrichten.

Genug geredet, lassen Sie uns Ihnen zeigen, wie Sie PSRemoting tatsächlich verwenden können!

Voraussetzungen

Wenn Sie die Beispiele in diesem Abschnitt nachvollziehen möchten, stellen Sie bitte sicher, dass Sie Folgendes haben:

  • A Windows Server 2008 R2 or later machine
  • A local or Active Directory domain user in the local administrators group

PSRemoting lokal aktivieren

Einer der einfachsten Wege, um PSRemoting zu aktivieren, besteht darin, den integrierten Befehl Enable-PSRemoting zu verwenden. Dieser Befehl ist, wie Sie oben gelernt haben, eine Abkürzung zur Konfiguration verschiedener Dienste, um PowerShell Remoting zu ermöglichen.

Verwendung des Cmdlets Enable-PSRemoting

Wenn Sie diesen Befehl ohne Parameter ausführen, werden je nachdem, welches Betriebssystem Sie verwenden, verschiedene Aktionen ausgeführt. Auf jedem aktuellen Windows-Betriebssystem werden die gleichen grundlegenden Schritte durchgeführt. PSRemoting wird aktiviert, der WinRM-HTTP-Listener wird erstellt und die Firewall-Regeln werden aktiviert. Der entscheidende Unterschied besteht darin, wie öffentliche Netzwerke behandelt werden.

Auf einem Server-Betriebssystem wie Windows Server 2019 erlaubt die Firewall-Regel für öffentliche Netzwerke Remoteverbindungen von anderen Geräten im selben Netzwerk. Auf einem Client-Betriebssystem wie Windows 10 erhalten Sie eine Fehlermeldung, die besagt, dass Sie sich in einem öffentlichen Netzwerk befinden.

Wenn Sie nicht sicher sind, unter welchem Netzwerkprofil Windows läuft, führen Sie den folgenden Befehl aus:

Get-NetConnectionProfile

Sie sollten PSRemoting nur in einem vertrauenswürdigen Netzwerk verwenden, da es im Wesentlichen einen Webserver ausführt, um auf Remoteverbindungen zu lauschen.

Get-NetConnectionProfile

Wenn Sie PSRemoting unter einem Netzwerkprofil außerhalb von Privat oder Domäne ausführen möchten, können Sie die Überprüfung des Netzwerkprofils mit dem Parameter SkipNetworkProfileCheck überspringen. Durch die Verwendung dieses Parameters werden die WinRM-Ports in der Windows-Firewall geöffnet.

Enable-PSRemoting -SkipNetworkProfileCheck

Durch die Verwendung des Parameters SkipNetworkProfileCheck wird die Windows-Firewall für PowerShell Remoting in Ihrem aktuellen Netzwerkprofil geöffnet, es werden jedoch nur Remoteverbindungen von Maschinen im selben Subnetz zugelassen.

Zwei Parameter, die mit Enable-PSRemoting verwendet werden können, arbeiten zusammen. Es handelt sich um die Parameter -Force und -Confirm. Sie können -Force verwenden, um alle Aufforderungen zu überspringen, die normalerweise bei der Ausführung des Befehls Enable-PSRemoting angezeigt werden. Sie können auch -Confirm:$false verwenden, um das gleiche Ergebnis zu erzielen.

Verwendung des Befehls winrm quickconfig

Der Befehl winrm quickconfig war früher eine beliebte Methode zur Einrichtung von PSRemoting, bevor das Cmdlet Enable-PSRemoting erstellt wurde, hat aber immer noch seine Berechtigung. Wenn Sie einfach winrm quickconfig ausführen, wird der WinRM-Dienst aktiviert, ein HTTP-Listener erstellt und die Firewall-Regeln aktiviert. Dies sind alles Dinge, die bereits von Enable-PSRemoting erledigt werden, aber damit wird die Maschine nicht so eingerichtet, dass sie Remote-PowerShell-Sitzungen verarbeiten kann.

Die winrm-Befehle sind nützlich, um HTTPS-Listener einzurichten. Obwohl Sie dies manuell tun können, können Sie bei einem geeigneten Zertifikat für den HTTPS-Listener einfach winrm quickconfig -transport:https ausführen und der HTTPS-Listener sowie die HTTPS-Firewall-Regeln werden konfiguriert.

Aktivierung von PSRemoting remote

Bisher haben Sie gelernt, dass Sie PSRemoting durch Ausführen eines Befehls auf einem lokalen Computer aktivieren können. Dies führt zu einem „Henne-Ei-Szenario“. PSRemoting ermöglicht das Ausführen von Befehlen auf Remote-Computern, aber wie führen Sie einen Befehl remote aus, ohne PSRemoting?

Es gibt drei Möglichkeiten: das Dienstprogramm PSexec, WMI und Gruppenrichtlinien.

Die Verwendung von Psexec

PSExec ist ein praktisches Dienstprogramm, mit dem Sie Remote-Befehle ausführen können, ähnlich wie PSRemoting. PSexec verwendet jedoch eine andere Kommunikationsmethode, die Sie zu Ihrem Vorteil nutzen können!

Mit PSexec können Sie den Befehl Enable-PSRemoting von Ihrem lokalen Computer aus mit folgendem Befehl ausführen. Der folgende Befehl ruft psexec auf und stellt eine Verbindung zum Server ServerB her. Anschließend wird ein PowerShell-Prozess gestartet und der Befehl Enable-PSRemoting mit dem Schalter -Force ausgeführt, um die üblichen Aufforderungen zu überspringen.

.\psexec.exe \ServerB -h -s powershell.exe Enable-PSRemoting -Force

Diese Option ist gut für einzelne Fälle, in denen Sie PSRemoting auf einem Remote-System aktivieren müssen, eignet sich jedoch nicht gut, um PSRemoting auf vielen Systemen zu aktivieren, und erfordert den Download von psexec.

Verwendung von WMI

Manchmal funktioniert PSexec nicht. Viele Sicherheitssoftware blockieren psexec, aber keine Sorge, Sie haben auch WMI!

Mit PowerShell und dem Befehl Invoke-CimMethod können Sie PowerShell anweisen, über DCOM eine Verbindung zum Remote-Computer herzustellen und Methoden aufzurufen.

Zum Glück verfügt WMI über eine Klasse Win32_Process, mit der Sie Prozesse aufrufen können. Durch Aufrufen einer Create-Methode gegenüber Win32_Process stellt Invoke-CimMethod eine Verbindung zum Remote-Computer her, ruft PowerShell auf und führt Enable-PSRemoting wie unten gezeigt aus.

Das unten stehende Beispiel erstellt eine Hashtabelle für die Sitzungsverbindung, in der der Servername, die Anmeldeinformationen und das Protokoll angegeben sind. Anschließend werden in der folgenden Hashtabelle die Parameter für Invoke-CimMethod festgelegt. Sobald diese ausgeführt werden, wird eine CIM-Sitzung über das DCOM-Protokoll erstellt, das einen PowerShell-Prozess startet, der wiederum den Befehl Enable-PSRemoting ausführt.

$SessionArgs = @{
     ComputerName  = 'ServerB'
     Credential    = Get-Credential
     SessionOption = New-CimSessionOption -Protocol Dcom
 }
 $MethodArgs = @{
     ClassName     = 'Win32_Process'
     MethodName    = 'Create'
     CimSession    = New-CimSession @SessionArgs
     Arguments     = @{
         CommandLine = "powershell Start-Process powershell -ArgumentList 'Enable-PSRemoting -Force'"
     }
 }
 Invoke-CimMethod @MethodArgs

Wenn Sie dies in einer Domänenumgebung verwenden und der Benutzer, der die Befehle ausführt, administrative Rechte auf dem Zielserver hat, kann die Zeile Credential = Get-Credential ausgeschlossen werden.

Verwendung von Gruppenrichtlinien

Die letzte und wohl beste Option, um WinRM auf einer Vielzahl von Computern zu aktivieren, ist die Verwendung von Gruppenrichtlinien. Bei Verwendung von Gruppenrichtlinien können Sie ein einziges Gruppenrichtlinienobjekt erstellen und diese Richtlinie auf Tausende von Computern gleichzeitig anwenden.

Alle Computer müssen sich in einer Active Directory-Domäne befinden, um Gruppenrichtlinien verwenden zu können.

Um Gruppenrichtlinien zu verwenden, um WinRM auf vielen Computern gleichzeitig zu aktivieren, müssen Sie drei verschiedene Konfigurationselemente festlegen:

  1. Aktivieren Sie den WinRM-Dienst.
  2. Öffnen Sie den Windows-Firewall-Port für WinRm.
  3. Erstellen Sie den WinRM-Listener und erlauben Sie Verbindungen dazu.

Zuerst RDP zu einem Domänencontroller oder noch besser, installieren Sie das Paket für die Remote Server-Verwaltungstools (RSAT) auf einem mit der Domäne verbundenen Arbeitsplatz. Sie sollten nun die Gruppenrichtlinienverwaltungskonsole (GPMC) zur Verfügung haben.

Aktivierung des WinRM-Dienstes

Um den WinRM-Dienst auf allen Zielcomputern zu aktivieren:

  1. Öffnen Sie die GPMC und erstellen Sie eine Gruppenrichtlinie (GPO). Während Sie in der neuen GPO sind, navigieren Sie zu Computerkonfiguration —> Windows-Einstellungen —> Sicherheitseinstellungen —> Systemdienste
  2. Wählen Sie Windows-Remoteverwaltung (WS-Verwaltung).
  3. In der Konfigurationsansicht aktivieren Sie das Kontrollkästchen für Diese Richtlinieneinstellung definieren.
  4. Wählen Sie die Option Automatisch, um den WinRM-Dienst automatisch beim Start zu starten.
  5. Klicken Sie auf OK, um die Einstellung zu bestätigen.

Öffnen des Windows-Firewall-Ports

Als nächstes müssen Sie den WinRM-Port auf allen Zielcomputern öffnen. Während Sie die oben erstellte GPO bearbeiten:

  1. Navigieren Sie zu Computerkonfiguration —> Windows-Einstellungen —> Sicherheitseinstellungen —> Windows Defender-Firewall mit erweiterter Sicherheit.

2. Klicken Sie auf Neue eingehende Regel, um eine neue eingehende Regel zu erstellen.

3. Wählen Sie auf der ersten Seite Vorgegeben aus und wählen Sie Windows-Remotemanagement wie unten gezeigt aus.

Windows Remote Management

4. Aktivieren Sie auf der nächsten Seite das Kontrollkästchen für die Regel Domänen-/Privatnetzwerk, es sei denn, Sie wissen, dass in Ihrer Umgebung öffentliche Netzwerke verwendet werden und Sie Remoteverbindungen von ihnen zulassen müssen.

Domain/Private network rule

5. Lassen Sie auf der nächsten Seite die Standardeinstellung Verbindung zulassen und klicken Sie auf Fertig stellen, um die Regel zu erstellen.

Erstellen Sie den WinRM-Listener und die Filterliste

Der letzte Konfigurationspunkt, der zur GPO hinzugefügt werden muss, besteht darin, den WinRM-Listener zu erstellen und Verbindungen zu diesem WinRM-Listener zuzulassen. Diese Einstellung erstellt den WinRM-Listener für HTTP und erlaubt Verbindungen dazu von den angegebenen IP-Adressen oder IP-Bereichen.

Während Sie die WinRM-GPO bearbeiten:

  1. Navigieren Sie zu Computerkonfiguration —> Administrative Vorlagen —> Windows-Komponenten —> Windows-Remotemanagement (WinRM) —> WinRM-Dienst.

2. Wählen Sie für die Einstellung Remoteservicemanagement über WinRM zulassen Aktiviert aus.

3. Geben Sie unter der Einstellung Remoteservermanagement über WinRM zulassen für sowohl den IPv4-Filter als auch den IPv6-Filter einen Asterisk (*) ein, wie unten gezeigt.

Beachten Sie, dass Sie in jeder Filterliste mehrere Hosts angeben können, die durch Kommas getrennt sind, wenn Sie im Voraus wissen, welche Hosts eine Verbindung zu allen Zielcomputern herstellen werden.

Allow remote server management through WinRM

4. Klicken Sie auf OK, um die neueste GPO-Einstellung zu bestätigen.

Anwendung der GPO

Zu diesem Zeitpunkt sollte die GPO erstellt und einsatzbereit sein. Die letzte Aufgabe, die Sie nun erledigen müssen, besteht darin, diese GPO auf alle Zielcomputer anzuwenden, auf denen Sie WinRM aktivieren möchten. In diesem Tutorial lernen Sie nicht, wie Sie einer Gruppe von Zielcomputern eine GPO zuweisen.

Wenn Sie nicht wissen, wie Sie einer Gruppe von Computern in Active Directory eine GPO zuweisen, sollten Sie diesen Artikel überprüfen.

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie Sie PSRemoting auf verschiedene Arten aktivieren können. Wie Sie PSRemoting aktivieren, hängt stark von Ihrer Umgebung ab, und ich hoffe, ich habe Ihr Szenario hier abgedeckt.

Nutzen Sie jetzt das Gelernte, gehen Sie raus und fangen Sie an, PSRemoting in Ihrer Umgebung zu verwenden!

Source:
https://adamtheautomator.com/enable-psremoting/