Freigeben über


about_Remote_Troubleshooting

Kurze Beschreibung

Beschreibt die Problembehandlung bei Remotevorgängen in PowerShell.

Lange Beschreibung

Informationen zur Konfiguration und grundlegenden Verwendung finden Sie unter about_Remote und about_Remote_Requirements , bevor Sie PowerShell-Remoting verwenden.

Sie müssen über Administratorrechte verfügen, um Einstellungen für den lokalen Computer auf dem WSMan: Laufwerk anzuzeigen oder zu ändern. Dies umfasst Änderungen an der Sitzungskonfiguration, vertrauenswürdigen Hosts, Ports oder Listenern.

Sie müssen PowerShell mit der Option Als Administrator ausführen ausführen.

Ausführen als Administrator

Fehler:

FEHLER: Der Zugriff wird verweigert. Sie müssen dieses Cmdlet über einen Prozess mit erhöhten Rechten ausführen.

Um Windows PowerShell mit der Option Als Administrator ausführen zu starten, klicken Sie im Startmenü mit der rechten Maustaste auf das PowerShell-Symbol, und wählen Sie Als Administrator ausführen aus.

Aktivieren von Remoting

Bei Fehlern:

  • FEHLER: DER ZUGRIFF WIRD VERWEIGERT
  • FEHLER: Die Verbindung mit dem Remotehost wurde abgelehnt. Vergewissern Sie sich, dass der WS-Management-Dienst auf dem Remotehost ausgeführt wird und so konfiguriert ist, dass er auf Anforderungen am richtigen Port und der richtigen HTTP-URL lauscht.

Zum Empfangen von Remotebefehlen muss PowerShell-Remoting auf dem Computer aktiviert sein. Windows PowerShell Remoting ist standardmäßig unter Windows Server 2012 und neueren Versionen von Windows Server aktiviert. Sie können ausführen Enable-PSRemoting , um remoting erneut zu aktivieren, wenn es deaktiviert war. Weitere Informationen finden Sie unter Enable-PSRemoting.

Aktivieren von Remoting in einem Unternehmen

Bei Fehlern:

  • FEHLER: DER ZUGRIFF WIRD VERWEIGERT
  • FEHLER: Die Verbindung mit dem Remotehost wurde abgelehnt. Vergewissern Sie sich, dass der WS-Management-Dienst auf dem Remotehost ausgeführt wird und so konfiguriert ist, dass er auf Anforderungen am richtigen Port und der richtigen HTTP-URL lauscht.

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 die Gruppenrichtlinie Automatische Konfiguration von Listenern zulassen , um Listener für Remoting zu konfigurieren.
  • Konfigurieren und Aktivieren der Windows-Firewall: Gruppenrichtlinie Lokale Portausnahmen zulassen .
  • Legen Sie den Starttyp des WinRM-Diensts auf fest, Automatic und starten Sie den Dienst.

Aktivieren von Listenern mithilfe einer Gruppenrichtlinie

Bei Fehlern:

  • FEHLER: DER ZUGRIFF WIRD VERWEIGERT
  • FEHLER: Die Verbindung mit dem Remotehost wurde abgelehnt. Vergewissern Sie sich, dass der WS-Management-Dienst auf dem Remotehost ausgeführt wird und so konfiguriert ist, dass er auf Anforderungen am richtigen Port und der richtigen HTTP-URL lauscht.

Aktivieren Sie die Richtlinie Automatische Konfiguration von Listenern zulassen , um die Listener für alle Computer in einer Domäne zu konfigurieren.

Die Richtlinie befindet sich 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

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

FEHLER: Die status der Firewall kann nicht überprüft werden.

Bei Serverversionen von Windows Enable-PSRemoting ist die Ausführung in allen Netzwerkprofilen 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.

Bei Clientversionen von Windows Enable-PSRemoting ist die Ausführung in privaten Und Domänennetzwerken erfolgreich. Standardmäßig schlägt es in öffentlichen Netzwerken fehl, aber wenn Sie den SkipNetworkProfileCheck-Parameter verwenden, wird der Vorgang erfolgreich ausgeführt und eine Firewallregel erstellt, Enable-PSRemoting die Datenverkehr aus demselben lokalen Subnetz zulässt.

Hinweis

In Windows PowerShell 2.0 erstellt auf Computern, auf denen Serverversionen von Windows ausgeführt werden, Firewallregeln, Enable-PSRemoting die den 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.

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.

Aktivieren einer Firewall-Ausnahme mithilfe einer Gruppenrichtlinie

Bei Fehlern:

  • FEHLER: DER ZUGRIFF WIRD VERWEIGERT
  • FEHLER: Die Verbindung mit dem Remotehost wurde abgelehnt. Vergewissern Sie sich, dass der WS-Management-Dienst auf dem Remotehost ausgeführt wird und so konfiguriert ist, dass er auf Anforderungen am richtigen Port und der richtigen HTTP-URL lauscht.

Verwenden Sie die Windows-Firewall: Lassen Sie lokale Portausnahmen zu, um eine Firewallausnahme für auf allen Computern in einer Domäne zu aktivieren.

Die Richtlinie befindet sich im folgenden Gruppenrichtlinie Pfad:

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

Mit dieser Richtlinie können Mitglieder der Gruppe Administratoren eine Firewall-Ausnahme für den Windows-Remoteverwaltungsdienst (WinRM) erstellen.

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

Der Client kann keine Verbindung mit dem in der Anforderung angegebenen Ziel herstellen. Vergewissern Sie sich, dass der Dienst auf dem Ziel ausgeführt wird und Anforderungen akzeptiert.

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.

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

Fehler:

FEHLER: DER ZUGRIFF WIRD VERWEIGERT

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

Unter Serverversionen von Windows ist Automaticder Starttyp des WinRM-Diensts . Unter Clientversionen von Windows ist der WinRM-Dienst jedoch standardmäßig deaktiviert.

Verwenden Sie das folgende Beispiel, um den Starttyp des WinRM-Diensts auf festzulegen und den Dienst zu Automatic starten. Der ComputerName-Parameter akzeptiert mehrere Werte.

$invokeCimMethodSplat = @{
    ComputerName = 'Server01', 'Server02'
    Query = 'Select * From Win32_Service Where Name = "WinRM"'
    MethodName = 'ChangeStartMode'
    Arguments = @{StartMode  = 'Automatic'}
}
Invoke-CimMethod @invokeCimMethodSplat

Erstellen der Standardsitzungskonfigurationen

Fehler:

FEHLER: DER ZUGRIFF WIRD VERWEIGERT

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 Sitzungskonfigurationen wiederherstellen möchten, können Sie die Konfigurationen löschen und neu erstellen.

Verwenden Sie das Unregister-PSSessionConfiguration Cmdlet, um die geänderten Sitzungskonfigurationen zu löschen. Verwenden Sie Enable-PSRemoting zum Wiederherstellen der ursprünglichen Sitzungskonfigurationen. 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, der standardmäßig sicher ist.

Geben Sie Folgendes ein, um den RootSDDL-Sicherheitsdeskriptor anzuzeigen:

Get-Item wsman:\localhost\Service\RootSDDL

Um die RootSDDL zu ändern, verwenden Sie das Set-Item Cmdlet auf dem WSMan: Laufwerk. Um den Sicherheitsdeskriptor einer Sitzungskonfiguration zu ändern, verwenden Sie das Set-PSSessionConfiguration Cmdlet mit den Parametern SecurityDescriptorSDDL oder ShowSecurityDescriptorUI .

Weitere Informationen zum WSMan: Laufwerk finden Sie unter about_WSMan_Provider.

Bereitstellen von Administratoranmeldeinformationen

Fehler:

FEHLER: ZUGRIFF VERWEIGERT

Sie müssen Mitglied der Gruppe Administratoren sein, um eine Verbindung mit den Standardendpunkten für Remotesitzungen herzustellen. Sie können den Credential-Parameter des New-PSSessionCmdlets oder Invoke-Command verwenden, Enter-PSSession um mithilfe alternativer Anmeldeinformationen eine Verbindung mit Remoteendpunkten herzustellen.

Das folgende Beispiel zeigt, wie Die Anmeldeinformationen für einen Administratorbenutzer bereitgestellt werden.

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

Weitere Informationen zum Credential-Parameter finden Sie in der Hilfe zu New-PSSession, Enter-PSSession oder Invoke-Command.

Aktivieren von Remoting für Benutzer ohne Administratorrechte

Fehler:

FEHLER: ZUGRIFF VERWEIGERT

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.

Im folgenden Beispiel wird ein Eigenschaftenblatt geöffnet, mit dem Sie den Sicherheitsdeskriptor der Standardsitzungskonfiguration Microsoft.PowerShell 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

Fehler:

FEHLER: ZUGRIFF VERWEIGERT

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 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.

Verwenden Sie den folgenden Befehl, um den Registrierungswert LocalAccountTokenFilterPolicy auf 1 festzulegen.

$newItemPropertySplat = @{
  Name = 'LocalAccountTokenFilterPolicy'
  Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
  PropertyType = 'DWord'
  Value = 1
}
New-ItemProperty @newItemPropertySplat

Verwenden einer IP-Adresse in einem Remotebefehl

Fehler:

FEHLER: Der WinRM-Client kann die Anforderung nicht verarbeiten. Wenn sich das Authentifizierungsschema von Kerberos unterscheidet oder der Clientcomputer nicht einer Domäne beigetreten ist, muss der HTTPS-Datentransport verwendet werden, oder der Zielcomputer muss der Konfigurationseinstellung „TrustedHosts“ hinzugefügt werden.

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. Wenn Sie eine IP-Adresse angeben, wird die NTLM-Authentifizierung verwendet.

Um die NTLM-Authentifizierung zu unterstützen, müssen Sie die folgenden Anforderungen erfüllen:

  • 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.
  • Verwenden Sie den Credential-Parameter in allen Remotebefehlen. Dies ist auch dann erforderlich, wenn Sie als aktueller Benutzer eine Verbindung herstellen.

Herstellen einer Remoteverbindung über einen arbeitsgruppenbasierten Computer

Für Fehler

FEHLER: Der WinRM-Client kann die Anforderung nicht verarbeiten. Wenn sich das Authentifizierungsschema von Kerberos unterscheidet oder der Clientcomputer nicht einer Domäne beigetreten ist, muss der HTTPS-Datentransport verwendet werden, oder der Zielcomputer muss der Konfigurationseinstellung „TrustedHosts“ hinzugefügt werden.

Wenn sich der lokale Computer nicht in einer Domäne befindet, müssen Sie die folgenden Anforderungen erfüllen:

  • 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.
  • 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 den Credential-Parameter in allen Remotebefehlen. Dies ist auch dann erforderlich, wenn Sie als aktueller Benutzer eine Verbindung herstellen.

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 das Laufwerk, um die Liste der vertrauenswürdigen Hosts anzuzeigen oder zu WSMan: ändern. 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

Im folgenden Beispiel wird das Wildcardzeichen (*) verwendet, um alle Computer der Liste der vertrauenswürdigen Hosts hinzuzufügen.

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 hinzugefügt.

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

Im folgenden Beispiel wird die Liste der vertrauenswürdigen Hosts auf einen einzelnen Computer festgelegt.

$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. Legen Sie dann den Wert auf eine Zeichenfolge fest, die eine durch Trennzeichen getrennte Liste enthält, die die aktuellen und neuen Werte enthält.

Im folgenden Beispiel wird Server01 einer vorhandenen Liste mit vertrauenswürdigen Hosts hinzugefügt.

$newServer = 'Server01.Domain01.Fabrikam.com'
$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).Value
Set-Item wsman:\localhost\Client\TrustedHosts -Value "$curValue, $newServer"

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 die , um eine Connect-WSMan Verbindung herzustellen, um den Remotecomputer zu WSMan: steuern, und verwenden Sie Set-Item , um den Computer hinzuzufügen.

Weitere Informationen finden Sie in der Hilfe zu Connect-WSMan.

Konfigurieren von Remoting an alternativen Ports

Fehler:

FEHLER: Die Verbindung mit dem angegebenen Remotehost wurde abgelehnt. Vergewissern Sie sich, dass der WS-Management Dienst auf dem Remotehost ausgeführt und so konfiguriert ist, dass anforderungen am richtigen Port und der richtigen HTTP-URL überwacht werden.

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.

Verwenden Sie Set-Item das Cmdlet, um den Portwert im Listenerblattknoten 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

Fehler:

FEHLER: Der Client kann keine Verbindung mit dem in der Anforderung angegebenen Ziel herstellen. Vergewissern Sie sich, dass der Dienst auf dem Ziel ausgeführt wird und Anforderungen akzeptiert.

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.

  • Verwenden Sie die Parameter ProxyAccessType, ProxyAuthentication und ProxyCredential des Cmdlets , um eine Variable zu erstellen, die New-PSSessionOption ein PSSessionOption-Objekt mit den Proxyeinstellungen für Ihr Unternehmen enthält.
  • Verwenden Sie die Variable, die das PSSessionOption-Objekt enthält, mit dem SessionOption-Parameter eines New-PSSession- oder Enter-PSSessionInvoke-Command -Befehls.
$newPSSessionOptionSplat = @{
    ProxyAccessType = 'IEConfig'
    ProxyAuthentication = 'Negotiate'
    ProxyCredential = 'Domain01\User01'
}
$SessionOption = New-PSSessionOption @newPSSessionOptionSplat

$newPSSessionSplat = @{
    ConnectionUri = 'https://www.fabrikam.com'
    SessionOption = $SessionOption
}
New-PSSession @newPSSessionSplat

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

Um diese Optionen für alle Remotebefehle in der aktuellen Sitzung festzulegen, legen Sie die $PSSessionOption Einstellungsvariable auf das von Ihnen erstellte PSSessionOption-Objekt fest. Weitere Informationen finden Sie unter about_Preference_Variables.

Um diese Optionen für alle Remotebefehle in allen 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

Fehler:

FEHLER: Der Begriff <Toolname> wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines funktionsfähigen Programms erkannt. Prüfen Sie die Schreibweise des Namens bzw. stellen Sie sicher, dass der Pfad korrekt angegeben wurde, und versuchen Sie es erneut.

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 WinRM einen WOW64-Prozess. Windows leitet automatisch alle Verweise an $env:Windir\System32 das $env:Windir\SysWOW64 Verzeichnis um.

Daher können im Verzeichnis ausgeführte Tools, die System32 keine Entsprechungen im SysWow64 Verzeichnis haben, nicht gefunden werden.

Um die Prozessorarchitektur zu ermitteln, die in der Sitzung verwendet wird, verwenden Sie den Wert der umgebungsvariablen PROCESSOR_ARCHITECTURE .

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

Weitere Informationen 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

Fehler:

FEHLER: Import-Module: Dateiname <> kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist.

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, kann die Ausführungsrichtlinie in der aktuellen Sitzung nicht oder AllSignedseinRestricted. Weitere Informationen finden Sie unter about_Execution_Policies.

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

Im folgenden Beispiel wird beispielsweise die Ausführungsrichtlinie für den aktuellen Prozess auf RemoteSigned festgelegt. Die Änderung wirkt sich nur auf den aktuellen Prozess aus.

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.

pwsh.exe -ExecutionPolicy RemoteSigned

Festlegen und Ändern von Kontingenten

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. Wenn Kontingente mit einem Befehl in Konflikt geraten, generiert PowerShell den folgenden Fehler.

FEHLER: Die gesamt vom Remoteclient empfangenen Daten überschreitet den zulässigen Höchstwert.

Der WSMan-Anbieter verfügt über die folgenden Kontingenteinstellungen:

  • Die Einstellungen MaxEnvelopeSizeKB und MaxProviderRequests im Knoten sowie die WSMan:<ComputerName> Einstellungen MaxConcurrentOperations, MaxConcurrentOperationsPerUser und MaxConnections im WSMan:<ComputerName>\Service Knoten.
  • Sie können die Parameter MaximumReceivedDataSizePerCommand und MaximumReceivedObjectSize des Cmdlets und der New-PSSessionOption$PSSessionOption Einstellungsvariablen verwenden, um den lokalen Computer zu schützen.
  • Um den Remotecomputer zu schützen, fügen Sie den Sitzungskonfigurationen Einschränkungen mithilfe der Parameter MaximumReceivedDataSizePerCommandMB und MaximumReceivedObjectSizeMB des Register-PSSessionConfiguration Cmdlets hinzu.

Um den Fehler zu beheben, ändern Sie den Remotebefehl so, dass er dem Kontingent entspricht, oder erhöhen Sie 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.

$setPSSessionConfigurationSplat = @{
    Name = 'Microsoft.PowerShell'
    MaximumReceivedObjectSizeMB = 11
    Force = $true
}
Set-PSSessionConfiguration @setPSSessionConfigurationSplat

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

Beheben von Timeoutfehlern

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.

Wenn ein Timeoutwert den Abschluss eines Vorgangs nicht zulässt, beendet PowerShell den Vorgang und generiert den folgenden Fehler.

FEHLER: Der WS-Management-Dienst kann den Vorgang nicht innerhalb der in OperationTimeout angegebenen Zeit abschließen.

Der WSMan-Anbieter verfügt über die folgenden Timeouteinstellungen.

  • Die Einstellung MaxTimeoutMs im WSMan:<ComputerName> Knoten und die Einstellungen EnumerationTimeoutMs und MaxPacketRetrievalTimeSeconds im WSMan:<ComputerName>\Service Knoten.
  • Sie können den lokalen Computer mit den Parametern CancelTimeout, IdleTimeout, OpenTimeout und OperationTimeout des New-PSSessionOption Cmdlets und der $PSSessionOption Einstellungsvariablen schützen.
  • Sie können den Remotecomputer auch schützen, indem Sie Timeoutwerte programmgesteuert in der Sitzungskonfiguration für die Sitzung festlegen.

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

Im folgenden Beispiel wird eine Sitzungsoption mit einem OperationTimeout-Wert von 4 Minuten (in MS) erstellt. Anschließend wird die Sitzungsoption verwendet, um eine Remotesitzung zu erstellen.

$pso = New-PSSessionOption -OperationTimeout 240000
New-PSSession -ComputerName Server01 -SessionOption $pso

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

Unterbrechen eines Befehls, der nicht reagiert

Einige native 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, eine partielle Ausgabe oder ein Remotebefehl, der nicht abgeschlossen wird.

Geben Sie STRG+c ein, um ein nicht reagierendes Programm zu beenden. Verwenden Sie Get-Error im lokalen Host und in der Remotesitzung, um alle möglicherweise gemeldeten Fehler anzuzeigen.

Wiederherstellen nach einem Vorgangsfehler

Der folgende Fehler wird zurückgegeben, wenn ein Vorgang beendet wird, bevor er abgeschlossen wird.

FEHLER: Der E/A-Vorgang wurde aufgrund eines Threadausgangs oder einer Anwendungsanforderung abgebrochen.

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

PowerShell-Remoting ist Linux und macOS, die Remoting über SSH verwenden. Weitere Informationen finden Sie unter PowerShell-Remoting über SSH.

Siehe auch