about_Remote_Troubleshooting

Kurze Beschreibung

Beschreibt, wie Remotevorgänge in PowerShell behandelt werden.

Lange Beschreibung

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

Sie müssen über Administratorrechte verfügen, um Einstellungen für den lokalen Computer auf dem WSMan: Laufwerk anzuzeigen oder zu ändern. Dazu gehören Ä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 wurde verweigert. Sie müssen dieses Cmdlet aus einem 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

Für Fehler:

  • FEHLER: ZUGRIFF VERWEIGERT
  • FEHLER: Die Verbindung mit dem Remotehost wurde abgelehnt. Stellen Sie sicher, dass der WS-Management-Dienst auf dem Remotehost ausgeführt wird und so konfiguriert ist, dass Anforderungen an den richtigen Port und die richtige HTTP-URL überwacht werden.

Um Remotebefehle zu empfangen, muss PowerShell-Remoting auf dem Computer aktiviert sein. Windows PowerShell-Remoting ist unter Windows Server 2012 und neueren Versionen von Windows Server standardmäßig aktiviert. Sie können ausführen Enable-PSRemoting , um Remoting erneut zu aktivieren, wenn sie deaktiviert wurde. Weitere Informationen finden Sie unter Enable-PSRemoting.

Aktivieren von Remoting in einem Unternehmen

Für Fehler:

  • FEHLER: ZUGRIFF VERWEIGERT
  • FEHLER: Die Verbindung mit dem Remotehost wurde abgelehnt. Stellen Sie sicher, dass der WS-Management-Dienst auf dem Remotehost ausgeführt wird und so konfiguriert ist, dass Anforderungen an den richtigen Port und die richtige HTTP-URL überwacht werden.

Verwenden Sie das Enable-PSRemoting Cmdlet, um einem einzelnen Computer den Empfang von Remote-PowerShell-Befehlen und das Akzeptieren von Verbindungen zu ermöglichen.

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

  • Aktivieren Sie die automatische Konfiguration der Listenergruppenrichtlinie zulassen, um Listener für Remoting zu konfigurieren.
  • Konfigurieren und Aktivieren der Windows-Firewall: Gruppenrichtlinie für lokale Port ausnahmen zulassen
  • Legen Sie den Starttyp des WinRM-Diensts auf den Dienst fest Automatic , und starten Sie den Dienst.

Aktivieren von Listenern mithilfe einer Gruppenrichtlinie

Für Fehler:

  • FEHLER: ZUGRIFF VERWEIGERT
  • FEHLER: Die Verbindung mit dem Remotehost wurde abgelehnt. Stellen Sie sicher, dass der WS-Management-Dienst auf dem Remotehost ausgeführt wird und so konfiguriert ist, dass Anforderungen an den richtigen Port und die richtige HTTP-URL überwacht werden.

Aktivieren Sie die Automatische Konfiguration der Listenerrichtlinie zulassen, um die Listener für alle Computer in einer Do Standard zu konfigurieren.

Die Richtlinie befindet sich im folgenden Gruppenrichtlinienpfad:

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. Wild Karte (*) sind zulässig.

Aktivieren von Remoting in öffentlichen Netzwerken

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

FEHLER: Der Status der Firewall kann nicht überprüft werden.

Auf Serverversionen von Windows Enable-PSRemoting ist es auf allen Netzwerkprofilen erfolgreich. Es erstellt Firewallregeln, die den Remotezugriff auf private netzwerke und do Standard ("Privat" und "Arbeit") ermöglichen. Für öffentliche Netzwerke werden Firewallregeln erstellt, die den Remotezugriff über dasselbe lokale Subnetz ermöglichen.

In Clientversionen von Windows Enable-PSRemoting ist es erfolgreich in privaten Netzwerken und in Standard Netzwerken. Standardmäßig schlägt er in öffentlichen Netzwerken fehl, aber wenn Sie den Parameter SkipNetworkProfileCheck verwenden, Enable-PSRemoting wird erfolgreich und erstellt eine Firewallregel, die Datenverkehr vom gleichen lokalen Subnetz zulässt.

Hinweis

In Windows PowerShell 2.0 werden auf Computern mit Serverversionen von Windows Firewallregeln erstellt, Enable-PSRemoting die den Remotezugriff auf private, do Standard und öffentliche Netzwerke ermöglichen. Auf Computern, auf denen Clientversionen von Windows ausgeführt werden, werden Firewallregeln erstellt, Enable-PSRemoting die den Remotezugriff nur in privaten netzwerken zulassen und dies tun Standard.

Führen Sie den folgenden Befehl aus, um die lokale Subnetzeinschränkung 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. 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.

So aktivieren Sie eine Firewall-Ausnahme mithilfe einer Gruppenrichtlinie

Für Fehler:

  • FEHLER: ZUGRIFF VERWEIGERT
  • FEHLER: Die Verbindung mit dem Remotehost wurde abgelehnt. Stellen Sie sicher, dass der WS-Management-Dienst auf dem Remotehost ausgeführt wird und so konfiguriert ist, dass Anforderungen an den richtigen Port und die richtige HTTP-URL überwacht werden.

Verwenden Sie die Windows-Firewall: Richtlinie für lokale Port exceptions to enable a firewall exception for in all computers in a do Standard.

Die Richtlinie befindet sich im folgenden Gruppenrichtlinienpfad:

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 die folgende Fehlermeldung:

Der Client kann keine Verbindung mit dem in der Anforderung angegebenen Ziel herstellen. Stellen Sie sicher, dass der Dienst am 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: ZUGRIFF VERWEIGERT

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

Auf Serverversionen von Windows ist Automaticder WinRM-Dienststarttyp . In Clientversionen von Windows ist der WinRM-Dienst jedoch standardmäßig deaktiviert.

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

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

So erstellen Sie die Standardsitzungskonfigurationen neu

Fehler:

FEHLER: ZUGRIFF VERWEIGERT

Wenn Sie dies verwenden Enable-PSRemoting, werden standardsitzungskonfigurationen auf dem lokalen Computer erstellt. Remotebenutzer verwenden diese Sitzungskonfigurationen, wenn ein Remotebefehl nicht den ConfigurationName-Parameter 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. Wenn ein Feature bereits konfiguriert ist, werden keine Fehler generiert.

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. Wird Enable-PSRemoting verwendet, um die ursprünglichen Sitzungskonfigurationen wiederherzustellen. Enable-PSRemoting ändert keine vorhandenen Sitzungskonfigurationen.

Hinweis

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

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

Get-Item wsman:\localhost\Service\RootSDDL

Verwenden Sie das Set-Item Cmdlet auf dem WSMan: Laufwerk, um die RootSDDL zu ändern. Verwenden Sie zum Ändern der Sicherheitsbeschreibung einer Sitzungskonfiguration das Set-PSSessionConfiguration Cmdlet mit den Parametern SecurityDescriptorSDDL oder ShowSecurityDescriptorUI .

Weitere Informationen zum WSMan: Laufwerk finden Sie unter about_WSMan_Provider.

So stellen Sie Administratoranmeldeinformationen bereit

Fehler:

FEHLER: ZUGRIFF VERWEIGERT

Sie müssen Mitglied der Gruppe "Administratoren" sein, die eine Verbindung mit den Standardmäßigen Remotesitzungsendpunkten herstellt. Sie können den Parameter "Anmeldeinformationen" der New-PSSessionOder Invoke-Command Cmdlets verwenden, Enter-PSSession um mithilfe alternativer Anmeldeinformationen eine Verbindung mit Remoteendpunkten herzustellen.

Das folgende Beispiel zeigt, wie Sie die Anmeldeinformationen für einen Administratorbenutzer angeben.

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

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

Aktivieren von Remoting für nicht administrative Benutzer

Fehler:

FEHLER: ZUGRIFF VERWEIGERT

Standardmäßig verfügen nur Mitglieder der Gruppe "Administratoren" auf einem Computer über die Berechtigung, 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 Berechtigungen zum Ausführen der Standardsitzungskonfigurationen auf dem lokalen Computer.

Im folgenden Beispiel wird ein Eigenschaftenblatt geöffnet, mit dem Sie die Sicherheitsbeschreibung 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 Aufgaben Standard

Fehler:

FEHLER: ZUGRIFF VERWEIGERT

Wenn ein Benutzer in einer anderen Do Standard Mitglied der Gruppe "Administratoren" auf dem lokalen Computer ist, kann der Benutzer keine Remoteverbindung mit administratorrechten mit dem lokalen Computer herstellen. Standardmäßig werden Remoteverbindungen von anderen Do Standard s 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, mit Administratorrechten auszuführen.

Achtung

Der LocalAccountTokenFilterPolicy-Eintrag deaktiviert Remoteeinschränkungen für alle Benutzer aller betroffenen Computer. 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 des New-PSSessionUnd Enter-PSSessionInvoke-Command Cmdlets 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.

Zur Unterstützung der NTLM-Authentifizierung 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 zur Liste "TrustedHosts " auf dem lokalen Computer hinzu.
  • Verwenden Sie den Parameter "Credential " in allen Remotebefehlen. Dies ist auch dann erforderlich, wenn Sie eine Verbindung als aktueller Benutzer herstellen.

So stellen Sie eine Remoteverbindung von einem Arbeitsgruppencomputer her

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 Do Standard 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 zur Liste "TrustedHosts " auf dem lokalen Computer hinzu.
  • Stellen Sie sicher, dass auf dem arbeitsgruppenbasierten Computer ein Kennwort festgelegt ist. Wenn kein Kennwort festgelegt ist oder der Kennwortwert leer ist, können Sie keine Remotebefehle ausführen.
  • Verwenden Sie den Parameter "Credential " in allen Remotebefehlen. Dies ist auch dann erforderlich, wenn Sie eine Verbindung als aktueller Benutzer herstellen.

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

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

Verwenden Sie das WSMan: Laufwerk, um die vertrauenswürdige Hostliste anzuzeigen oder zu ändern. Das TrustedHost-Element befindet sich im WSMan:\localhost\Client Knoten. Nur Mitglieder der Gruppe "Administratoren" auf dem Computer verfügen über die Berechtigung, die Liste der vertrauenswürdigen Hosts auf dem Computer zu ändern.

Achtung

Der Wert, den Sie für das Element "TrustedHosts" 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 Wild Karte Zeichen (*) verwendet, um alle Computer zur Liste der vertrauenswürdigen Hosts hinzuzufügen.

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

Sie können auch ein Wild Karte Zeichen (*) verwenden, um alle Computer in einer bestimmten Do Standard zur Liste der vertrauenswürdigen Hosts hinzuzufügen. Mit dem folgenden Befehl werden beispielsweise alle Computer in fabrikam do Standard 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

Wenn Sie einer vorhandenen Liste vertrauenswürdiger Hosts einen Computernamen hinzufügen möchten, 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 zu einer vorhandenen Liste vertrauenswürdiger 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"

Wenn Sie der Liste der vertrauenswürdigen Hosts die IP-Adressen bestimmter Computer hinzufügen möchten, verwenden Sie das folgende Befehlsformat:

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

Zum Beispiel:

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

Verwenden Sie zum Hinzufügen eines Computers zur Liste "TrustedHosts" eines Remotecomputers die Connect-WSMan Verbindung, um WSMan: den Remotecomputer zu verbinden, um Set-Item den Computer hinzuzufügen.

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

So konfigurieren Sie Remoting auf alternativen Ports

Fehler:

FEHLER: Die Verbindung mit dem angegebenen Remotehost wurde abgelehnt. Stellen Sie sicher, dass der WS-Management-Dienst auf dem Remotehost ausgeführt wird und so konfiguriert ist, dass Anforderungen an den richtigen Port und die richtige HTTP-URL überwacht werden.

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

Verwenden Sie Set-Item das Cmdlet, um den Portwert im Listenerblattknoten zu ändern.

Beispielsweise ändert der folgende Befehl den Standardport in 8080.

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. Stellen Sie sicher, dass der Dienst am Ziel ausgeführt wird und Anforderungen akzeptiert.

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

Verwenden Sie zum Beheben dieses Problems die Proxyeinstellungsoptionen in Ihrem Remotebefehl.

  • 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, und verwenden Sie den SessionOption-Parameter eines New-PSSession, Enter-PSSessionoder Invoke-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 der PowerShell-Profil die $PSSessionOption Einstellungsvariable hinzu. Weitere Informationen über PowerShell-Profile finden Sie unter about_Profiles.

So erkennen Sie eine 32-Bit-Sitzung auf einem 64-Bit-Computer

Fehler:

FEHLER: Der Name> des Begriffstools <wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines operierbaren 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 verwendet, z . B. Microsoft.PowerShell32, lädt WinRM einen WOW64-Prozess. Windows leitet automatisch alle Verweise auf $env:Windir\System32 das $env:Windir\SysWOW64 Verzeichnis um.

Daher kann das Ausführen von Tools im System32 Verzeichnis, die keine Entsprechungen im SysWow64 Verzeichnis haben, nicht gefunden werden.

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

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

Weitere Informationen finden Sie unter about_Session_Configurations.

Problembehandlung bei Richtlinien- und Einstellungsproblemen

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

So ändern Sie die Ausführungsrichtlinie für Import-PSSession und Import-Module

Fehler:

FEHLER: Importmodul: Dateidateiname <> kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist.

Mit den Import-PSSession Cmdlets Export-PSSession werden Module erstellt, 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 Informationen zu Ausführungsrichtlinien.

Um die Module zu importieren, ohne die Ausführungsrichtlinie für den lokalen Computer zu ändern, verwenden Sie den Scope-ParameterSet-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 festgelegt RemoteSigned . Die Änderung wirkt sich nur auf den aktuellen Prozess aus.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

Sie können auch den ExecutionPolicy-ParameterPowerShell.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ösartig. Wenn Kontingente mit einem Befehl in Konflikt geraten, generiert PowerShell den folgenden Fehler.

FEHLER: Die vom Remoteclient empfangenen Gesamtdaten haben maximal zulässig überschritten.

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

  • Die Einstellungen "MaxEnvelopeSizeKB" und "MaxProviderRequests" im WSMan:<ComputerName> Knoten und "MaxConcurrentOperations", "MaxConcurrentOperationsPerUser" und "Max Verbinden ions" im WSMan:<ComputerName>\Service Knoten.
  • Sie können die Parameter MaximumReceivedDataSizePerCommand und MaximumReceivedObjectSize des New-PSSessionOption Cmdlets und die $PSSessionOption Einstellungsvariable 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 es dem Kontingent entspricht, oder erhöhen Sie das Kontingent, damit der Befehl abgeschlossen werden kann.

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

$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 die Ausführung 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 Timeoutseinstellungen.

  • Einstellung "MaxTimeoutMs" im WSMan:<ComputerName> Knoten und "EnumerationTimeoutMs" und "MaxPacketRetrievalTimeSeconds" im WSMan:<ComputerName>\Service Knoten.
  • Sie können den lokalen Computer mithilfe der Parameter CancelTimeout, IdleTimeout, OpenTimeout und OperationTimeout des New-PSSessionOption Cmdlets und der $PSSessionOption Einstellungsvariable 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 zum Erstellen einer Remotesitzung verwendet.

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

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

So unterbrechen Sie einen Befehl, der nicht reagiert

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

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

Um ein nicht reagierende Programm zu beenden, geben Sie STRG+C ein. Verwenden Sie Get-Error den lokalen Host und die Remotesitzung, um fehler anzuzeigen, die möglicherweise gemeldet wurden.

Wiederherstellen eines Vorgangsfehlers

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

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

Dies tritt in der Regel 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 es 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 erneut aus, der den Fehler generiert hat.

Linux- und macOS-Einschränkungen

PowerShell-Remoting ist Linux und macOS mit Remoting über SSH. Weitere Informationen finden Sie unter PowerShell Remoting Over SSH.

Weitere Informationen