about_Remote_Requirements

Kurze Beschreibung

Beschreibt die Systemanforderungen und Konfigurationsanforderungen für die Ausführung von Remotebefehlen in PowerShell.

Lange Beschreibung

In diesem Thema werden die Systemanforderungen, Benutzeranforderungen und Ressourcenanforderungen zum Einrichten von Remoteverbindungen und Ausführen von Remotebefehlen in PowerShell beschrieben. Außerdem werden Anweisungen zum Konfigurieren von Remotevorgängen bereitgestellt.

Hinweis

Viele Cmdlets (einschließlich der Get-Service, Get-Process, Get-WMIObject, , Get-EventLogund Get-WinEvent Cmdlets) rufen Objekte von Remotecomputern mithilfe von Microsoft .NET Framework-Methoden ab, um die Objekte abzurufen. Sie verwenden die PowerShell-Remoting-Infrastruktur nicht. Die Anforderungen in diesem Dokument gelten nicht für diese Cmdlets.

Um die Cmdlets zu finden, die einen ComputerName-Parameter haben, aber keine PowerShell-Remoting verwenden, lesen Sie die Beschreibung des ComputerName-Parameters der Cmdlets.

Systemanforderungen

Zum Ausführen von Remotesitzungen auf Windows PowerShell 3.0 müssen die lokalen und Remotecomputer folgendes aufweisen:

  • Windows PowerShell 3.0 oder höher
  • Microsoft .NET Framework 4 oder höher
  • Windows Remote Management 3.0

Zum Ausführen von Remotesitzungen auf Windows PowerShell 2.0 müssen die lokalen und Remotecomputer folgendes aufweisen:

  • Windows PowerShell 2.0 oder höher
  • Microsoft .NET Framework 2.0 oder höher
  • Windows Remote Management 2.0

Sie können Remotesitzungen zwischen Computern erstellen, auf denen Windows PowerShell 2.0 und Windows PowerShell 3.0 ausgeführt wird. Features, die nur auf Windows PowerShell 3.0 ausgeführt werden, z. B. die Möglichkeit zum Trennen und Erneute Herstellen einer Verbindung mit Sitzungen, sind jedoch nur verfügbar, wenn beide Computer Windows PowerShell 3.0 ausführen.

Um die Versionsnummer einer installierten Version von PowerShell zu finden, verwenden Sie die $PSVersionTable automatische Variable.

Windows Remote Management (WinRM) 3.0 und Microsoft .NET Framework 4 sind in Windows 8, Windows Server 2012 und neueren Versionen des Windows-Betriebssystems enthalten. WinRM 3.0 ist in Windows Management Framework 3.0 für ältere Betriebssysteme enthalten. Wenn der Computer nicht über die erforderliche Version von WinRM oder microsoft .NET Framework verfügt, schlägt die Installation fehl.

Benutzerberechtigungen

Um Remotesitzungen zu erstellen und Remotebefehle auszuführen, muss der aktuelle Benutzer standardmäßig Mitglied der Gruppe "Administratoren " auf dem Remotecomputer sein oder die Anmeldeinformationen eines Administrators angeben. Andernfalls führt der Befehl zu einem Fehler.

Die erforderlichen Berechtigungen zum Erstellen von Sitzungen und Ausführen von Befehlen auf einem Remotecomputer (oder in einer Remotesitzung auf dem lokalen Computer) werden von der Sitzungskonfiguration (auch als Endpunkt bezeichnet) auf dem Remotecomputer festgelegt, mit dem die Sitzung eine Verbindung herstellt. Insbesondere bestimmt der Sicherheitsdeskriptor in der Sitzungskonfiguration, wer Zugriff auf die Sitzungskonfiguration hat und wer es verwenden kann, um eine Verbindung herzustellen.

Die Sicherheitsdeskriptoren für die Standardsitzungskonfigurationen Microsoft.PowerShell, Microsoft.PowerShell32 und Microsoft.PowerShell.Workflow ermöglichen nur den Zugriff auf Mitglieder der Gruppe "Administratoren".

Wenn der aktuelle Benutzer nicht über die Berechtigung zum Verwenden der Sitzungskonfiguration verfügt, schlägt der Befehl zum Ausführen eines Befehls (die eine temporäre Sitzung verwendet) oder eine dauerhafte Sitzung auf dem Remotecomputer fehl. Der Benutzer kann den ConfigurationName-Parameter von Cmdlets verwenden, die Sitzungen erstellen, um eine andere Sitzungskonfiguration auszuwählen, wenn eine verfügbar ist.

Mitglieder der Gruppe "Administratoren " auf einem Computer können ermitteln, wer über die Berechtigung verfügt, eine Remoteverbindung mit dem Computer herzustellen, indem die Sicherheitsdeskriptoren in den Standardsitzungskonfigurationen geändert und neue Sitzungskonfigurationen mit unterschiedlichen Sicherheitsdeskriptoren erstellt werden.

Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.

Windows-Netzwerkspeicherorte

Ab Windows PowerShell 3.0 kann das Enable-PSRemoting Cmdlet das Remoting auf Client- und Serverversionen von Windows in privaten, domänen- und öffentlichen Netzwerken aktivieren.

Auf Serverversionen von Windows mit privaten und Domänennetzwerken erstellt das Cmdlet Enable-PSRemoting Firewallregeln, die uneingeschränkten Remotezugriff ermöglichen. Außerdem wird eine Firewallregel für öffentliche Netzwerke erstellt, die den Remotezugriff nur von Computern im selben lokalen Subnetz ermöglicht. Diese lokale Subnetzfirewallregel ist standardmäßig auf Serverversionen von Windows in öffentlichen Netzwerken aktiviert, wendet jedoch Enable-PSRemoting die Regel erneut an, wenn sie geändert oder gelöscht wurde.

In Clientversionen von Windows mit privaten und Domänennetzwerken erstellt das Enable-PSRemoting Cmdlet standardmäßig Firewallregeln, die uneingeschränkten Remotezugriff zulassen.

Verwenden Sie den SkipNetworkProfileCheck-Parameter des Enable-PSRemoting Cmdlets, um Die Remoting auf Clientversionen von Windows mit öffentlichen Netzwerken zu aktivieren. Es erstellt eine Firewallregel, die den Remotezugriff nur von Computern imselben lokalen Subnetz ermöglicht.

Verwenden Sie das Set-NetFirewallRule Cmdlet im NetSecurity-Modul , um die lokale Subnetzeinschränkung in öffentlichen Netzwerken zu entfernen und den Remotezugriff von allen Speicherorten auf Client- und Serverversionen von Windows zuzulassen. Führen Sie den folgenden Befehl aus:

Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Hinweis

Der Name der Firewallregel kann für verschiedene Versionen von Windows unterschiedlich sein. Wird verwendet Get-NetFirewallRule , um eine Liste der Regeln anzuzeigen. Bevor Sie die Firewallregel aktivieren, zeigen Sie die Sicherheitseinstellungen in der Regel an, um zu überprüfen, ob die Konfiguration für Ihre Umgebung geeignet ist.

In Windows PowerShell 2.0 erstellt windows-Serverversionen Enable-PSRemoting Firewallregeln, die Remotezugriff auf alle Netzwerke ermöglichen.

In Windows PowerShell 2.0 erstellt windows-Clientversionen Enable-PSRemoting Firewallregeln nur in privaten und Domänennetzwerken. Wenn der Netzwerkspeicherort öffentlich ist, Enable-PSRemoting schlägt ein Fehler fehl.

Als Administrator ausführen

Administratorrechte sind für die folgenden Remotingvorgänge erforderlich:

  • Einrichten einer Remoteverbindung mit dem lokalen Computer. Dies wird häufig als "Loopback"-Szenario bezeichnet.

  • Verwalten von Sitzungskonfigurationen auf dem lokalen Computer.

  • Anzeigen und Ändern von WS-Management Einstellungen auf dem lokalen Computer. Dies sind die Einstellungen im LocalHost-Knoten des WSMAN:-Laufwerks.

Um diese Aufgaben auszuführen, müssen Sie PowerShell mit der Option "Als Administrator ausführen" starten, auch wenn Sie Mitglied der Gruppe "Administratoren " auf dem lokalen Computer sind.

Starten Sie PowerShell in Windows 7 und windows Server 2008 R2 mit der Option "Als Administrator ausführen ":

  1. Klicken Sie auf "Start", klicken Sie auf "Alle Programme", klicken Sie auf "Zubehör", und klicken Sie dann auf den PowerShell-Ordner.
  2. Klicken Sie mit der rechten Maustaste auf PowerShell, und klicken Sie dann auf "Als Administrator ausführen".

So starten Sie Windows PowerShell mit der Option "Als Administrator ausführen":

  1. Klicken Sie auf "Start", klicken Sie auf "Alle Programme", und klicken Sie dann auf den PowerShell-Ordner.
  2. Klicken Sie mit der rechten Maustaste auf PowerShell, und klicken Sie dann auf "Als Administrator ausführen".

Die Option "Als Administrator ausführen" ist auch in anderen Windows Explorer-Einträgen für PowerShell verfügbar, einschließlich Tastenkombinationen. Klicken Sie einfach mit der rechten Maustaste auf das Element, und klicken Sie dann auf "Als Administrator ausführen".

Wenn Sie PowerShell aus einem anderen Programm wie Cmd.exe starten, verwenden Sie die Option "Als Administrator ausführen ", um das Programm zu starten.

So konfigurieren Sie Ihren Computer für das Remoting

Computer, auf denen alle unterstützten Versionen von Windows ausgeführt werden, können Remoteverbindungen herstellen und Remotebefehle in PowerShell ohne Konfiguration ausführen. Um Jedoch Verbindungen zu empfangen und Benutzern das Erstellen lokaler und remote verwalteter PowerShell-Sitzungen ("PSSessions") zu ermöglichen und Befehle auf dem lokalen Computer auszuführen, müssen Sie PowerShell-Remoting auf dem Computer aktivieren.

Windows Server 2012 und neuere Versionen von Windows Server sind standardmäßig für PowerShell-Remoting aktiviert. Wenn die Einstellungen geändert werden, können Sie die Standardeinstellungen wiederherstellen, indem Sie das Enable-PSRemoting Cmdlet ausführen.

Auf allen anderen unterstützten Versionen von Windows müssen Sie das Enable-PSRemoting Cmdlet ausführen, um PowerShell-Remoting zu aktivieren.

Die Remoting-Features von PowerShell werden vom WinRM-Dienst unterstützt, was die Microsoft-Implementierung des Web Services for Management (WS-Management)-Protokolls ist. Wenn Sie PowerShell-Remoting aktivieren, ändern Sie die Standardkonfiguration von WS-Management und fügen Systemkonfiguration hinzu, mit der Benutzer eine Verbindung mit WS-Management herstellen können.

So konfigurieren Sie PowerShell zum Empfangen von Remotebefehlen:

  1. Starten Sie PowerShell mit der Option "Als Administrator ausführen ".
  2. Geben Sie an der Eingabeaufforderung Folgendes ein: Enable-PSRemoting

Um zu überprüfen, ob Die Remoting ordnungsgemäß konfiguriert ist, führen Sie einen Testbefehl wie den folgenden Befehl aus, der eine Remotesitzung auf dem lokalen Computer erstellt.

New-PSSession

Wenn die Remoting ordnungsgemäß konfiguriert ist, erstellt der Befehl eine Sitzung auf dem lokalen Computer und gibt ein Objekt zurück, das die Sitzung darstellt. Die Ausgabe sollte der folgenden Beispielausgabe ähneln:

Id Name        ComputerName    State    ConfigurationName
-- ----        ------------    -----    -----
1  Session1    localhost       Opened   Microsoft.PowerShell

Wenn der Befehl fehlschlägt, lesen Sie about_Remote_Troubleshooting.

Verstehen von Richtlinien

Wenn Sie remote arbeiten, verwenden Sie zwei Instanzen von PowerShell, eine auf dem lokalen Computer und eine auf dem Remotecomputer. Daher ist Ihre Arbeit von den Windows-Richtlinien und den PowerShell-Richtlinien auf den lokalen und Remotecomputern betroffen.

Im Allgemeinen sind die Richtlinien auf dem lokalen Computer wirksam, bevor Sie eine Verbindung herstellen und wie Sie die Verbindung herstellen. Wenn Sie die Verbindung verwenden, werden die Richtlinien auf dem Remotecomputer wirksam.

Grundlegende Authentifizierungseinschränkungen für Linux und macOS

Beim Herstellen einer Verbindung von einem Linux- oder macOS-System mit Windows wird die Standardauthentifizierung über HTTP nicht unterstützt. Die Standardauthentifizierung kann über HTTPS verwendet werden, indem ein Zertifikat auf dem Zielserver installiert wird. Das Zertifikat muss über einen CN-Namen verfügen, der dem Hostnamen entspricht, ist nicht abgelaufen oder widerrufen. Ein selbstsigniertes Zertifikat kann zu Testzwecken verwendet werden.

Weitere Informationen finden Sie unter How To: Configure WINRM for HTTPS for HTTPS .

Der folgende Befehl, der von einer Eingabeaufforderung mit erhöhten Rechten ausgeführt wird, konfiguriert den HTTPS-Listener unter Windows mit dem installierten Zertifikat.

$hostinfo = '@{Hostname="<DNS_NAME>"; CertificateThumbprint="<THUMBPRINT>"}'
winrm create winrm/config/Listener?Address=*+Transport=HTTPS $hostinfo

Wählen Sie auf der Linux- oder macOS-Seite "Standard für Authentifizierung" und "-UseSSl" aus.

Hinweis

Die Standardauthentifizierung kann nicht mit Domänenkonten verwendet werden; Ein lokales Konto ist erforderlich, und das Konto muss sich in der Gruppe "Administratoren " befinden.

# The specified local user must have administrator rights on the target machine.
# Specify the unqualified username.
$cred = Get-Credential username
$session = New-PSSession -Computer <hostname> -Credential $cred `
  -Authentication Basic -UseSSL

Eine Alternative zur Standardauthentifizierung über HTTPS ist Negotiate. Dies führt dazu, dass die NTLM-Authentifizierung zwischen Client und Server und Nutzlast über HTTP verschlüsselt wird.

Im Folgenden wird die Verwendung von "Negotiate with New-PSSession" veranschaulicht:

# The specified user must have administrator rights on the target machine.
$cred = Get-Credential username@hostname
$session = New-PSSession -Computer <hostname> -Credential $cred `
  -Authentication Negotiate

Hinweis

Windows Server erfordert eine zusätzliche Registrierungseinstellung, um Administratoren außer dem integrierten Administrator die Verbindung mit NTLM zu ermöglichen. Weitere Informationen finden Sie unter der Registrierungseinstellung "LocalAccountTokenFilterPolicy" unter "Authentifizierung in Authentifizierung für Remoteverbindungen"

Siehe auch