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 Automatic
der 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-PSSession
Cmdlets 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-PSSession
Cmdlets und Enter-PSSession
Invoke-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
- oderEnter-PSSession
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 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 AllSigned
seinRestricted
. 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 imWSMan:<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 imWSMan:<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.
Starten Sie PowerShell mit der Option Als Administrator ausführen .
Führen Sie den folgenden Befehl aus:
Start-Service WinRM
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.