about_Remote_Troubleshooting

Kurze Beschreibung

Beschreibt, wie Remotevorgänge in PowerShell behandelt werden.

Lange Beschreibung

In diesem Abschnitt werden einige der Probleme beschrieben, die bei der Verwendung der Remotingfeatures von PowerShell auftreten können, die auf WS-Management Technologie basieren, und es werden Lösungen für diese Probleme vorgeschlagen.

Informationen zur Konfiguration und grundlegenden Verwendung finden Sie unter about_Remote und about_Remote_Requirements , bevor Sie PowerShell-Remoting verwenden. Außerdem enthalten die Hilfethemen für die einzelnen Remoting-Cmdlets, insbesondere die Parameterbeschreibungen, nützliche Informationen, die Ihnen helfen sollen, Probleme zu vermeiden.

Hinweis

Starten Sie PowerShell mit der Option Als Administrator ausführen , um Einstellungen für den lokalen Computer im Laufwerk WSMan: anzuzeigen oder zu ändern, einschließlich Änderungen an den Sitzungskonfigurationen, vertrauenswürdigen Hosts, Ports oder Listenern.

Behandeln von Berechtigungs- und Authentifizierungsproblemen

In diesem Abschnitt werden Remotingprobleme im Zusammenhang mit Benutzer- und Computerberechtigungen und Remotinganforderungen erläutert.

Ausführen als Administrator

ERROR: Access is denied. You need to run this cmdlet from an elevated
process.

Um eine Remotesitzung auf dem lokalen Computer zu starten oder die Einstellungen für den lokalen Computer im Laufwerk WSMan: anzuzeigen oder zu ändern, einschließlich Änderungen an den Sitzungskonfigurationen, vertrauenswürdigen Hosts, Ports oder Listenern, starten Sie Windows PowerShell mit der Option Als Administrator ausführen.

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

  • Klicken Sie mit der rechten Maustaste auf ein symbol Windows PowerShell (oder Windows PowerShell ISE), und klicken Sie dann auf Als Administrator ausführen.

    Um Windows PowerShell mit der Option Als Administrator ausführen in Windows 7 und Windows Server 2008 R2 zu starten.

  • Klicken Sie auf der Windows-Taskleiste mit der rechten Maustaste auf das Symbol Windows PowerShell, und klicken Sie dann auf Als Administrator ausführen.

    In Windows Server 2008 R2 ist das symbol Windows PowerShell standardmäßig an die Taskleiste angeheftet.

Aktivieren von Remoting

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to
listen for requests on the correct port and HTTP URL.

Es ist keine Konfiguration erforderlich, damit ein Computer Remotebefehle senden kann. Um Jedoch Remotebefehle empfangen zu können, muss PowerShell-Remoting auf dem Computer aktiviert sein. Die Aktivierung umfasst das Starten des WinRM-Diensts, das Festlegen des Starttyps für den WinRM-Dienst auf Automatisch, das Erstellen von Listenern für HTTP- und HTTPS-Verbindungen und das Erstellen von Standardsitzungskonfigurationen.

Windows PowerShell Remoting ist für Windows Server 2012 und neuere Versionen von Windows Server standardmäßig aktiviert. Führen Sie auf allen anderen Systemen das Enable-PSRemoting Cmdlet aus, um Remoting zu aktivieren. Sie können das Enable-PSRemoting Cmdlet auch ausführen, um Remoting auf Windows Server 2012 und neueren Versionen von Windows Server erneut zu aktivieren, wenn Remoting deaktiviert ist.

Verwenden Sie das Cmdlet, um einen Computer für den Enable-PSRemoting Empfang von Remotebefehlen zu konfigurieren. Der folgende Befehl aktiviert alle erforderlichen Remoteeinstellungen, aktiviert die Sitzungskonfigurationen und startet den WinRM-Dienst neu, um die Änderungen wirksam zu machen.

Enable-PSRemoting

Geben Sie Folgendes ein, um alle Benutzereingabeaufforderungen zu unterdrücken:

Enable-PSRemoting -Force

Weitere Informationen finden Sie unter Enable-PSRemoting.

Aktivieren von Remoting in einem Unternehmen

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

Verwenden Sie das Enable-PSRemoting Cmdlet, damit ein einzelner Computer PowerShell-Remotebefehle empfangen und Verbindungen akzeptiert.

Um Remoting für mehrere Computer in einem Unternehmen zu aktivieren, können Sie die folgenden skalierten Optionen verwenden.

  • Aktivieren Sie zum Konfigurieren von Listenern für Remoting die Gruppenrichtlinie Automatische Konfiguration von Listenern zulassen .

  • Um den Starttyp der Windows-Remoteverwaltung (WinRM) auf mehreren Computern auf Automatisch festzulegen, verwenden Sie das Set-Service Cmdlet.

  • Verwenden Sie zum Aktivieren einer Firewallausnahme die Gruppenrichtlinie Windows-Firewall: Lokale Portausnahmen zulassen .

Aktivieren von Listenern mithilfe einer Gruppenrichtlinie

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

Um die Listener für alle Computer in einer Domäne zu konfigurieren, aktivieren Sie die Richtlinie Automatische Konfiguration von Listenern zulassen im folgenden Gruppenrichtlinie Pfad:

Computer Configuration\Administrative Templates\Windows Components
    \Windows Remote Management (WinRM)\WinRM service

Aktivieren Sie die Richtlinie, und geben Sie die IPv4- und IPv6-Filter an. Wildcards (*) sind zulässig.

Aktivieren von Remoting in öffentlichen Netzwerken

ERROR:  Unable to check the status of the firewall

Das Enable-PSRemoting Cmdlet gibt diesen Fehler zurück, wenn das lokale Netzwerk öffentlich ist und der SkipNetworkProfileCheck-Parameter im Befehl nicht verwendet wird.

Unter Serverversionen von Windows Enable-PSRemoting ist auf allen Netzwerkstandorttypen erfolgreich. Es erstellt Firewallregeln, die den Remotezugriff auf private Netzwerke und Domänennetzwerke ("Home" und "Work") ermöglichen. Für öffentliche Netzwerke werden Firewallregeln erstellt, die den Remotezugriff aus demselben lokalen Subnetz ermöglichen.

Unter Clientversionen von Windows Enable-PSRemoting ist in privaten und Domänennetzwerken erfolgreich. Standardmäßig tritt in öffentlichen Netzwerken ein Fehler auf. Wenn Sie jedoch den SkipNetworkProfileCheck-Parameter verwenden, Enable-PSRemoting wird erfolgreich ausgeführt, und es wird eine Firewallregel erstellt, die Datenverkehr aus demselben lokalen Subnetz zulässt.

Führen Sie den folgenden Befehl aus, um die Einschränkung des lokalen Subnetzes in öffentlichen Netzwerken zu entfernen und den Remotezugriff von einem beliebigen Standort aus zuzulassen:

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

Das Set-NetFirewallRule Cmdlet wird vom NetSecurity-Modul exportiert.

Hinweis

Der Name der Firewallregel kann für verschiedene Versionen von Windows unterschiedlich sein. Verwenden Sie Get-NetFirewallRule , um eine Liste von Regeln anzuzeigen. Zeigen Sie vor dem Aktivieren der Firewallregel die Sicherheitseinstellungen in der Regel an, um zu überprüfen, ob die Konfiguration für Ihre Umgebung geeignet ist.

Hinweis

In Windows PowerShell 2.0 erstellt auf Computern, auf denen Serverversionen von Windows ausgeführt werden, Firewallregeln, Enable-PSRemoting die Remotezugriff auf private, Domänen- und öffentliche Netzwerke zulassen. Erstellt auf Computern, auf denen Clientversionen von Windows ausgeführt werden, Firewallregeln, Enable-PSRemoting die den Remotezugriff nur auf private Netzwerke und Domänennetzwerke zulassen.

Aktivieren einer Firewall-Ausnahme mithilfe einer Gruppenrichtlinie

ERROR:  ACCESS IS DENIED

or

ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

Um eine Firewallausnahme für auf allen Computern in einer Domäne zu aktivieren, aktivieren Sie die Richtlinie Windows-Firewall: Lokale Portausnahmen zulassen im folgenden Gruppenrichtlinie Pfad:

Computer Configuration\Administrative Templates\Network
    \Network Connections\Windows Firewall\Domain Profile

Mit dieser Richtlinie können Mitglieder der Gruppe Administratoren auf dem Computer die Windows-Firewall in Systemsteuerung verwenden, um eine Firewall-Ausnahme für den Windows-Remoteverwaltungsdienst zu erstellen.

Wenn die Richtlinienkonfiguration falsch ist, erhalten Sie möglicherweise den folgenden Fehler:

The client cannot connect to the destination specified in the request. Verify
that the service on the destination is running and is accepting requests.

Ein Konfigurationsfehler in der Richtlinie führt zu einem leeren Wert für die ListeningOn-Eigenschaft . Verwenden Sie den folgenden Befehl, um den Wert zu überprüfen.

PS> Get-WSManInstance winrm/config/listener -Enumerate

cfg                   : http://schemas.microsoft.com/wbem/wsman/1/config/listener
xsi                   : http://www.w3.org/2001/XMLSchema-instance
Source                : GPO
lang                  : en-US
Address               : *
Transport             : HTTP
Port                  : 5985
Hostname              :
Enabled               : true
URLPrefix             : wsman
CertificateThumbprint :
ListeningOn           : {}

Festlegen des Starttyps des WinRM-Diensts

ERROR:  ACCESS IS DENIED

PowerShell-Remoting hängt vom Windows-Remoteverwaltungsdienst (WinRM) ab. Der Dienst muss ausgeführt werden, um Remotebefehle zu unterstützen.

Bei Serverversionen von Windows ist der Starttyp des Windows-Remoteverwaltungsdiensts (WinRM) Automatisch.

Unter Clientversionen von Windows ist der WinRM-Dienst jedoch standardmäßig deaktiviert.

Verwenden Sie Set-Service das Cmdlet, um den Starttyp eines Diensts auf einem Remotecomputer festzulegen.

Um den Befehl auf mehreren Computern auszuführen, können Sie eine Textdatei oder CSV-Datei mit den Computernamen erstellen.

Die folgenden Befehle rufen beispielsweise eine Liste der Computernamen aus der Servers.txt Datei ab und legen dann den Starttyp des WinRM-Diensts auf allen Computern auf Automatisch fest.

$servers = Get-Content servers.txt
Set-Service WinRM -ComputerName $servers -startuptype Automatic

Verwenden Sie zum Anzeigen der Ergebnisse das Get-WMIObject Cmdlet mit dem Win32_Service-Objekt . Weitere Informationen finden Sie unter Set-Service.

So erstellen Sie die Standardsitzungskonfigurationen neu

ERROR:  ACCESS IS DENIED

Um eine Verbindung mit dem lokalen Computer herzustellen und Befehle remote auszuführen, muss der lokale Computer Sitzungskonfigurationen für Remotebefehle enthalten.

Wenn Sie verwenden Enable-PSRemoting, werden Standardsitzungskonfigurationen auf dem lokalen Computer erstellt. Remotebenutzer verwenden diese Sitzungskonfigurationen immer dann, wenn ein Remotebefehl den Parameter ConfigurationName nicht enthält.

Wenn die Standardkonfigurationen auf einem Computer nicht registriert oder gelöscht werden, verwenden Sie das Enable-PSRemoting Cmdlet, um sie neu zu erstellen. Sie können dieses Cmdlet wiederholt verwenden. Es werden keine Fehler generiert, wenn ein Feature bereits konfiguriert ist.

Wenn Sie die Standardsitzungskonfigurationen ändern und die ursprünglichen Standardsitzungskonfigurationen wiederherstellen möchten, verwenden Sie das Unregister-PSSessionConfiguration Cmdlet, um die geänderten Sitzungskonfigurationen zu löschen, und verwenden Sie dann das Enable-PSRemoting Cmdlet, um sie wiederherzustellen. Enable-PSRemoting ändert keine vorhandenen Sitzungskonfigurationen.

Hinweis

Wenn Enable-PSRemoting die Standardsitzungskonfiguration wiederhergestellt wird, werden keine expliziten Sicherheitsbeschreibungen für die Konfigurationen erstellt. Stattdessen erben die Konfigurationen den Sicherheitsdeskriptor der RootSDDL, die standardmäßig sicher ist.

Um den RootSDDL-Sicherheitsdeskriptor anzuzeigen, geben Sie Folgendes ein:

Get-Item wsman:\localhost\Service\RootSDDL

Verwenden Sie zum Ändern der RootSDDL das Set-Item Cmdlet im Laufwerk WSMan: . Verwenden Sie zum Ändern des Sicherheitsdeskriptors einer Sitzungskonfiguration das Set-PSSessionConfiguration Cmdlet mit den Parametern SecurityDescriptorSDDL oder ShowSecurityDescriptorUI .

Weitere Informationen zum WSMan:-Laufwerk finden Sie im Hilfethema für den WSMan-Anbieter ("Get-Help wsman").

Bereitstellen von Administratoranmeldeinformationen

ERROR:  ACCESS IS DENIED

Um eine PSSession zu erstellen oder Befehle auf einem Remotecomputer auszuführen, muss der aktuelle Benutzer standardmäßig Mitglied der Gruppe Administratoren auf dem Remotecomputer sein. Anmeldeinformationen sind manchmal erforderlich, auch wenn der aktuelle Benutzer bei einem Konto angemeldet ist, das Mitglied der Gruppe Administratoren ist.

Wenn der aktuelle Benutzer Mitglied der Gruppe Administratoren auf dem Remotecomputer ist oder die Anmeldeinformationen eines Mitglieds der Gruppe Administratoren angeben kann, verwenden Sie den Credential-Parameter des New-PSSessionCmdlets oder Invoke-Command , Enter-PSSession um eine Remoteverbindung herzustellen.

Der folgende Befehl stellt beispielsweise die Anmeldeinformationen eines Administrators bereit.

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

Weitere Informationen zum Credential-Parameter finden Sie unter New-PSSession, Enter-PSSession oder Invoke-Command.

Aktivieren von Remoting für Benutzer ohne Administratorrechte

ERROR:  ACCESS IS DENIED

Um eine PSSession einzurichten oder einen Befehl auf einem Remotecomputer auszuführen, muss der Benutzer über die Berechtigung zum Verwenden der Sitzungskonfigurationen auf dem Remotecomputer verfügen.

Standardmäßig sind nur Mitglieder der Gruppe Administratoren auf einem Computer berechtigt, die Standardsitzungskonfigurationen zu verwenden. Daher können nur Mitglieder der Gruppe Administratoren remote eine Verbindung mit dem Computer herstellen.

Damit andere Benutzer eine Verbindung mit dem lokalen Computer herstellen können, erteilen Sie dem Benutzer die Berechtigung Ausführen für die Standardsitzungskonfigurationen auf dem lokalen Computer.

Mit dem folgenden Befehl wird ein Eigenschaftenblatt geöffnet, mit dem Sie den Sicherheitsdeskriptor der Microsoft.PowerShell-Standardsitzungskonfiguration auf dem lokalen Computer ändern können.

Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI

Weitere Informationen finden Sie unter about_Session_Configurations.

Aktivieren von Remoting für Administratoren in anderen Domänen

ERROR:  ACCESS IS DENIED

Wenn ein Benutzer in einer anderen Domäne Mitglied der Gruppe Administratoren auf dem lokalen Computer ist, kann der Benutzer keine Remoteverbindung mit dem lokalen Computer mit Administratorrechten herstellen. Standardmäßig werden Remoteverbindungen von anderen Domänen nur mit Standardbenutzerberechtigungstoken ausgeführt.

Sie können jedoch den Registrierungseintrag LocalAccountTokenFilterPolicy verwenden, um das Standardverhalten zu ändern und Remotebenutzern, die Mitglieder der Gruppe Administratoren sind, die Ausführung mit Administratorrechten zu ermöglichen.

Achtung

Mit dem Eintrag LocalAccountTokenFilterPolicy werden Remoteeinschränkungen der Benutzerkontensteuerung (UAC) für alle Benutzer aller betroffenen Computer deaktiviert. Berücksichtigen Sie die Auswirkungen dieser Einstellung sorgfältig, bevor Sie die Richtlinie ändern.

Um die Richtlinie zu ändern, verwenden Sie den folgenden Befehl, um den Wert des Registrierungseintrags LocalAccountTokenFilterPolicy auf 1 festzulegen.

New-ItemProperty -Name LocalAccountTokenFilterPolicy `
  -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
  -PropertyType DWord -Value 1

Verwenden einer IP-Adresse in einem Remotebefehl

ERROR: The WinRM client cannot process the request. If the authentication
scheme is different from Kerberos, or if the client computer is not joined to a
domain, then HTTPS transport must be used or the destination machine must be
added to the TrustedHosts configuration setting.

Der ComputerName-Parameter der New-PSSessionCmdlets und Enter-PSSessionInvoke-Command akzeptiert eine IP-Adresse als gültigen Wert. Da die Kerberos-Authentifizierung jedoch keine IP-Adressen unterstützt, wird die NTLM-Authentifizierung standardmäßig verwendet, wenn Sie eine IP-Adresse angeben.

Bei Verwendung der NTLM-Authentifizierung ist das folgende Verfahren für Remoting erforderlich.

  1. Konfigurieren Sie den Computer für den HTTPS-Transport, oder fügen Sie die IP-Adressen der Remotecomputer der Liste TrustedHosts auf dem lokalen Computer hinzu.

  2. Verwenden Sie den Credential-Parameter in allen Remotebefehlen.

    Dies ist auch dann erforderlich, wenn Sie die Anmeldeinformationen des aktuellen Benutzers übermitteln.

Herstellen einer Remoteverbindung über einen arbeitsgruppenbasierten Computer

ERROR: The WinRM client cannot process the request. If the authentication
scheme is different from Kerberos, or if the client computer is not joined to a
domain, then HTTPS transport must be used or the destination machine must be
added to the TrustedHosts configuration setting.

Wenn sich der lokale Computer nicht in einer Domäne befindet, ist das folgende Verfahren für Remoting erforderlich.

  1. Konfigurieren Sie den Computer für den HTTPS-Transport, oder fügen Sie die Namen der Remotecomputer der Liste TrustedHosts auf dem lokalen Computer hinzu.

  2. Stellen Sie sicher, dass auf dem arbeitsgruppenbasierten Computer ein Kennwort festgelegt ist. Wenn kein Kennwort festgelegt oder der Kennwortwert leer ist, können Sie keine Remotebefehle ausführen.

    Verwenden Sie Benutzerkonten in Systemsteuerung, um das Kennwort für Ihr Benutzerkonto festzulegen.

  3. Verwenden Sie den Credential-Parameter in allen Remotebefehlen.

    Dies ist auch dann erforderlich, wenn Sie die Anmeldeinformationen des aktuellen Benutzers übermitteln.

Hinzufügen eines Computers zur Liste der vertrauenswürdigen Hosts

Das TrustedHosts-Element kann eine durch Trennzeichen getrennte Liste von Computernamen, IP-Adressen und vollqualifizierten Domänennamen enthalten. Platzhalter sind zulässig.

Verwenden Sie zum Anzeigen oder Ändern der Liste der vertrauenswürdigen Hosts das Laufwerk WSMan: . Das TrustedHost-Element befindet sich im WSMan:\localhost\Client Knoten.

Nur Mitglieder der Gruppe Administratoren auf dem Computer haben die Berechtigung, die Liste der vertrauenswürdigen Hosts auf dem Computer zu ändern.

Achtung: Der Wert, den Sie für das TrustedHosts-Element festlegen, wirkt sich auf alle Benutzer des Computers aus.

Verwenden Sie den folgenden Befehl, um die Liste der vertrauenswürdigen Hosts anzuzeigen:

Get-Item wsman:\localhost\Client\TrustedHosts

Sie können auch das Set-Location Cmdlet (alias = cd) verwenden, um durch das WSMan:-Laufwerk zum Speicherort zu navigieren. Beispiel:

cd WSMan:\localhost\Client; dir

Um der Liste der vertrauenswürdigen Hosts alle Computer hinzuzufügen, verwenden Sie den folgenden Befehl, der den Wert * (alle) in ComputerName eingibt.

Set-Item wsman:localhost\client\trustedhosts -Value *

Sie können auch ein Wildcardzeichen (*) verwenden, um alle Computer in einer bestimmten Domäne der Liste der vertrauenswürdigen Hosts hinzuzufügen. Mit dem folgenden Befehl werden beispielsweise alle Computer in der Domäne Fabrikam der Liste der vertrauenswürdigen Hosts hinzugefügt.

Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com

Verwenden Sie das folgende Befehlsformat, um die Namen bestimmter Computer zur Liste der vertrauenswürdigen Hosts hinzuzufügen:

Set-Item wsman:\localhost\Client\TrustedHosts -Value <ComputerName>

Dabei muss jeder Wert <ComputerName> das folgende Format aufweisen:

<Computer>.<Domain>.<Company>.<top-level-domain>

Beispiel:

$server = 'Server01.Domain01.Fabrikam.com'
Set-Item wsman:\localhost\Client\TrustedHosts -Value $server

Um einer vorhandenen Liste vertrauenswürdiger Hosts einen Computernamen hinzuzufügen, speichern Sie zuerst den aktuellen Wert in einer Variablen, und legen Sie den Wert dann auf eine durch Trennzeichen getrennte Liste fest, die die aktuellen und neuen Werte enthält.

Verwenden Sie beispielsweise den folgenden Befehl, um den Server01-Computer einer vorhandenen Liste vertrauenswürdiger Hosts hinzuzufügen.

$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).value

Set-Item wsman:\localhost\Client\TrustedHosts -Value `
  "$curValue, Server01.Domain01.Fabrikam.com"

Verwenden Sie das folgende Befehlsformat, um die IP-Adressen bestimmter Computer zur Liste der vertrauenswürdigen Hosts hinzuzufügen:

Set-Item wsman:\localhost\Client\TrustedHosts -Value <IP Address>

Beispiel:

Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0

Um einen Computer zur TrustedHosts-Liste eines Remotecomputers hinzuzufügen, verwenden Sie das Connect-WSMan Cmdlet, um dem Laufwerk WSMan: auf dem lokalen Computer einen Knoten für den Remotecomputer hinzuzufügen. Verwenden Sie dann einen Set-Item Befehl, um den Computer hinzuzufügen.

Weitere Informationen zum Connect-WSMan Cmdlet finden Sie unter Connect-WSMan.

Behandeln von Problemen mit der Computerkonfiguration

In diesem Abschnitt werden Remotingprobleme erläutert, die sich auf bestimmte Konfigurationen eines Computers, einer Domäne oder eines Unternehmens beziehen.

Konfigurieren von Remoting an alternativen Ports

ERROR: The connection to the specified remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.

PowerShell-Remoting verwendet standardmäßig Port 80 für den HTTP-Transport. Der Standardport wird immer dann verwendet, wenn der Benutzer die Parameter ConnectionURI oder Port in einem Remotebefehl nicht angibt.

Um den Standardport zu ändern, den PowerShell verwendet, verwenden Sie Set-Item das Cmdlet im Laufwerk WSMan: , um den Portwert im Blattknoten des Listeners zu ändern.

Mit dem folgenden Befehl wird beispielsweise der Standardport in 8080 geändert.

Set-Item wsman:\localhost\listener\listener*\port -Value 8080

Konfigurieren von Remoting mit einem Proxyserver

ERROR: The client cannot connect to the destination specified in the request.
Verify that the service on the destination is running and is accepting
requests.

Da PowerShell-Remoting das HTTP-Protokoll verwendet, wird es von DEN HTTP-Proxyeinstellungen beeinflusst. In Unternehmen mit Proxyservern können Benutzer nicht direkt auf einen PowerShell-Remotecomputer zugreifen.

Verwenden Sie proxyeinstellungsoptionen in Ihrem Remotebefehl, um dieses Problem zu beheben. Die folgenden Einstellungen sind verfügbar:

  • ProxyAccessType
  • ProxyAuthentication
  • ProxyCredential

Gehen Sie wie folgt vor, um diese Optionen für einen bestimmten Befehl festzulegen:

  1. Verwenden Sie die Parameter ProxyAccessType, ProxyAuthentication und ProxyCredential des New-PSSessionOption Cmdlets, um ein Sitzungsoptionsobjekt mit den Proxyeinstellungen für Ihr Unternehmen zu erstellen. Speichern Des Optionsobjekts ist eine Variable.

  2. Verwenden Sie die Variable, die das Optionsobjekt enthält, als Wert des SessionOption-Parameters eines New-PSSession- oder Invoke-CommandEnter-PSSession-Befehls.

Der folgende Befehl erstellt beispielsweise ein Sitzungsoptionsobjekt mit Proxysitzungsoptionen und verwendet dann das -Objekt, um eine Remotesitzung zu erstellen.

$SessionOption = New-PSSessionOption -ProxyAccessType IEConfig `
-ProxyAuthentication Negotiate -ProxyCredential Domain01\User01

New-PSSession -ConnectionURI https://www.fabrikam.com

Weitere Informationen zum New-PSSessionOption Cmdlet finden Sie unter New-PSSessionOption.

Verwenden Sie zum Festlegen dieser Optionen für alle Remotebefehle in der aktuellen Sitzung das Optionsobjekt, das New-PSSessionOption im Wert der $PSSessionOption Einstellungsvariablen erstellt wird. Weitere Informationen finden Sie unter about_Preference_Variables.

Um diese Optionen für alle Remotebefehle für alle PowerShell-Sitzungen auf dem lokalen Computer festzulegen, fügen Sie die $PSSessionOption Einstellungsvariable ihrem PowerShell-Profil hinzu. Weitere Informationen zu PowerShell-Profilen finden Sie unter about_Profiles.

Erkennen einer 32-Bit-Sitzung auf einem 64-Bit-Computer

ERROR: The term "<tool-Name>" is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.

Wenn auf dem Remotecomputer eine 64-Bit-Version von Windows ausgeführt wird und der Remotebefehl eine 32-Bit-Sitzungskonfiguration wie Microsoft.PowerShell32 verwendet, lädt die Windows-Remoteverwaltung (WinRM) einen WOW64-Prozess, und Windows leitet automatisch alle Verweise auf das $env:Windir\System32 Verzeichnis an das $env:Windir\SysWOW64 Verzeichnis um.

Wenn Sie daher versuchen, Tools im System32-Verzeichnis zu verwenden, die keine Entsprechungen im SysWow64-Verzeichnis haben, z Defrag.exe. B. , können die Tools nicht im Verzeichnis gefunden werden.

Um die Prozessorarchitektur zu ermitteln, die in der Sitzung verwendet wird, verwenden Sie den Wert der umgebungsvariablen PROCESSOR_ARCHITECTURE . Der folgende Befehl sucht die Prozessorarchitektur der Sitzung in der $s Variablen.

$s = New-PSSession -ComputerName Server01 -ConfigurationName CustomShell
Invoke-Command -Session $s {$env:PROCESSOR_ARCHITECTURE}
x86

Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.

Behandeln von Richtlinien- und Einstellungsproblemen

In diesem Abschnitt werden Remotingprobleme erläutert, die sich auf Richtlinien und Einstellungen beziehen, die auf den lokalen Computern und Remotecomputern festgelegt sind.

Ändern der Ausführungsrichtlinie für Import-PSSession und Import-Module

ERROR: Import-Module: File <filename> cannot be loaded because the
execution of scripts is disabled on this system.

Die Import-PSSession Cmdlets und Export-PSSession erstellen Module, die nicht signierte Skriptdateien und Formatierungsdateien enthalten.

Um die Module zu importieren, die von diesen Cmdlets erstellt werden, entweder mit Import-PSSession oder Import-Module, kann die Ausführungsrichtlinie in der aktuellen Sitzung nicht Eingeschränkt oder AllSigned sein. Informationen zu PowerShell-Ausführungsrichtlinien finden Sie unter about_Execution_Policies.

Um die Module zu importieren, ohne die Ausführungsrichtlinie für den lokalen Computer zu ändern, die in der Registrierung festgelegt ist, verwenden Sie den Scope-Parameter von, um eine weniger restriktive Ausführungsrichtlinie Set-ExecutionPolicy für einen einzelnen Prozess festzulegen.

Der folgende Befehl startet beispielsweise einen Prozess mit der Ausführungsrichtlinie RemoteSigned . Die Änderung der Ausführungsrichtlinie wirkt sich nur auf den aktuellen Prozess aus und ändert nicht die Registrierungseinstellung PowerShell ExecutionPolicy .

Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned

Sie können auch den ExecutionPolicy-Parameter von PowerShell.exe verwenden, um eine einzelne Sitzung mit einer weniger restriktiven Ausführungsrichtlinie zu starten.

PowerShell.exe -ExecutionPolicy RemoteSigned

Weitere Informationen zu Ausführungsrichtlinien finden Sie unter about_Execution_Policies. Geben Sie Folgendes ein, um weitere Informationen zu erhalten: PowerShell.exe -?.

Festlegen und Ändern von Kontingenten

ERROR: The total data received from the remote client exceeded allowed
maximum.

Sie können Kontingente verwenden, um den lokalen Computer und den Remotecomputer vor übermäßiger Ressourcennutzung zu schützen, sowohl versehentlich als auch böswillig.

Die folgenden Kontingente sind in der Basiskonfiguration verfügbar.

  • Der WSMan-Anbieter (WSMan:) stellt mehrere Kontingenteinstellungen bereit, z. B. die Einstellungen MaxEnvelopeSizeKB und MaxProviderRequests im WSMan:<ComputerName> Knoten sowie die Einstellungen MaxConcurrentOperations, MaxConcurrentOperationsPerUser und MaxConnections im WSMan:<ComputerName>\Service Knoten.

  • Sie können den lokalen Computer schützen, indem Sie die Parameter MaximumReceivedDataSizePerCommand und MaximumReceivedObjectSize des New-PSSessionOption Cmdlets und der $PSSessionOption Einstellungsvariablen verwenden.

  • Sie können den Remotecomputer schützen, indem Sie den Sitzungskonfigurationen Einschränkungen hinzufügen, z. B. mit den Parametern MaximumReceivedDataSizePerCommandMB und MaximumReceivedObjectSizeMB des Register-PSSessionConfiguration Cmdlets.

Wenn Kontingente mit einem Befehl in Konflikt geraten, generiert PowerShell einen Fehler.

Um den Fehler zu beheben, ändern Sie den Remotebefehl so, dass er dem Kontingent entspricht. Oder bestimmen Sie die Quelle des Kontingents, und erhöhen Sie dann das Kontingent, damit der Befehl abgeschlossen werden kann.

Der folgende Befehl erhöht beispielsweise das Objektgrößenkontingent in der Microsoft.PowerShell-Sitzungskonfiguration auf dem Remotecomputer von 10 MB (Standardwert) auf 11 MB.

Set-PSSessionConfiguration -Name microsoft.PowerShell `
  -MaximumReceivedObjectSizeMB 11 -Force

Weitere Informationen zum New-PSSessionOption Cmdlet finden Sie unter New-PSSessionOption.

Weitere Informationen zu den WS-Management Kontingenten finden Sie unter about_WSMan_Provider.

Beheben von Timeoutfehlern

ERROR: The WS-Management service cannot complete the operation within
the time specified in OperationTimeout.

Sie können Timeouts verwenden, um den lokalen Computer und den Remotecomputer vor übermäßiger Ressourcennutzung zu schützen, sowohl versehentlich als auch böswillig. Wenn Timeouts sowohl auf dem lokalen als auch auf dem Remotecomputer festgelegt werden, verwendet PowerShell die kürzesten Timeouteinstellungen.

Die folgenden Timeouts sind in der Basiskonfiguration verfügbar.

  • Der WSMan-Anbieter (WSMan:) stellt mehrere clientseitige und dienstseitige Timeouteinstellungen bereit, z. B. die Einstellung MaxTimeoutms im WSMan:<ComputerName> Knoten und die Einstellungen EnumerationTimeoutms und MaxPacketRetrievalTimeSeconds im WSMan:<ComputerName>\Service Knoten.

  • Sie können den lokalen Computer schützen, indem Sie die Parameter CancelTimeout, IdleTimeout, OpenTimeout und OperationTimeout des New-PSSessionOption Cmdlets und der Einstellungsvariablen $PSSessionOption verwenden.

  • Sie können den Remotecomputer auch schützen, indem Sie timeoutwerte programmgesteuert in der Sitzungskonfiguration für die Sitzung festlegen.

Wenn ein Timeoutwert das Abschließen eines Vorgangs nicht zulässt, beendet PowerShell den Vorgang und generiert einen Fehler.

Um den Fehler zu beheben, ändern Sie den Befehl so, dass er innerhalb des Timeoutintervalls abgeschlossen wird, oder bestimmen Sie die Quelle des Timeoutlimits, und erhöhen Sie das Timeoutintervall, damit der Befehl abgeschlossen werden kann.

Beispielsweise verwenden die folgenden Befehle das New-PSSessionOption Cmdlet, um ein Sitzungsoptionsobjekt mit einem OperationTimeout-Wert von 4 Minuten (in MS) zu erstellen und dann das Sitzungsoptionsobjekt zum Erstellen einer Remotesitzung zu verwenden.

$pso = New-PSSessionoption -OperationTimeout 240000

New-PSSession -ComputerName Server01 -sessionOption $pso

Weitere Informationen zu den WS-Management Timeouts finden Sie im Hilfethema für den WSMan-Anbieter (Typ Get-Help WSMan).

Weitere Informationen zum New-PSSessionOption Cmdlet finden Sie unter New-PSSessionOption.

Problembehandlung bei nicht reagierenden Verhaltensweisen

In diesem Abschnitt werden Remotingprobleme erläutert, die verhindern, dass ein Befehl abgeschlossen wird und die Rückgabe der PowerShell-Eingabeaufforderung verhindert oder verzögert wird.

Unterbrechen eines Befehls

Einige native Windows-Programme, z. B. Programme mit einer Benutzeroberfläche, Konsolenanwendungen, die zur Eingabe auffordern, und Konsolenanwendungen, die die Win32-Konsolen-API verwenden, funktionieren auf dem PowerShell-Remotehost nicht ordnungsgemäß.

Wenn Sie diese Programme verwenden, wird möglicherweise unerwartetes Verhalten angezeigt, z. B. keine Ausgabe, teilweise Ausgabe oder ein Remotebefehl, der nicht abgeschlossen wird.

Um ein nicht reagierendes Programm zu beenden, geben Sie STRG+C ein. Um möglicherweise gemeldete Fehler anzuzeigen, geben Sie $error den lokalen Host und die Remotesitzung ein.

Wiederherstellen nach einem Vorgangsfehler

ERROR: The I/O operation has been aborted because of either a thread exit
or an  application request.

Dieser Fehler wird zurückgegeben, wenn ein Vorgang beendet wird, bevor er abgeschlossen wird. In der Regel tritt dies auf, wenn der WinRM-Dienst beendet oder neu gestartet wird, während andere WinRM-Vorgänge ausgeführt werden.

Um dieses Problem zu beheben, überprüfen Sie, ob der WinRM-Dienst ausgeführt wird, und versuchen Sie den Befehl erneut.

  1. Starten Sie PowerShell mit der Option Als Administrator ausführen .

  2. Führen Sie den folgenden Befehl aus:

    Start-Service WinRM

  3. Führen Sie den Befehl, der den Fehler generiert hat, erneut aus.

Linux- und macOS-Einschränkungen

Authentifizierung

Unter macOS funktioniert nur die Standardauthentifizierung, und der Versuch, andere Authentifizierungsschemas zu verwenden, kann zu einem Absturz des Prozesses führen.

Weitere Informationen finden Sie in den Anweisungen zur OMI-Authentifizierung .

Siehe auch