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 Domäne 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. 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 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. Sie erstellt Firewallregeln, die den Remotezugriff auf private Netzwerke und Domänen ("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 und Domänennetzwerken. 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, domänen- 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 und Domänennetzwerken ermöglichen.
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: Lokale Port-Ausnahmenrichtlinie zulassen, um eine Firewall-Ausnahme für alle Computer in einer Domäne zu aktivieren.
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 Automatic
der 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-PSSession
Oder 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 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 aus 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, 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-PSSession
Und Enter-PSSession
Invoke-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 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 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 Domänennamen 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 Wildcardzeichen (*
) verwendet, um alle Computer zur 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 zur Liste der vertrauenswürdigen Hosts hinzuzufügen. Mit dem folgenden Befehl werden beispielsweise alle Computer in der Fabrikam-Domäne 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 Connect-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 "ConnectionURI " oder "Port " nicht in einem Remotebefehl 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-PSSession
oderInvoke-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 AllSigned
seinRestricted
. 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-Parameter 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ö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 "MaxConnections " imWSMan:<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" imWSMan:<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.
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 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.