Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kurzbeschreibung
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 laufwerk WSMan: 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ührenaus.
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 Enable-PSRemoting ausführen, 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 cmdlet Enable-PSRemoting, 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 von Listenern Gruppenrichtlinie zulassen, um Listener für Remoting zu konfigurieren.
- Konfigurieren und aktivieren Sie die Windows-Firewall: Lokale Port ausnahmen Gruppenrichtlinie zulassen.
- Legen Sie den Starttyp des WinRM-Diensts auf
Automaticfest, 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 von Listenern Richtlinie 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 SkipNetworkProfileCheck Parameter nicht im Befehl verwendet wird.
FEHLER: Der Status der Firewall kann nicht überprüft werden.
Auf Serverversionen von Windows ist Enable-PSRemoting 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 ist Enable-PSRemoting in privaten und Domänennetzwerken erfolgreich. Standardmäßig schlägt er in öffentlichen Netzwerken fehl, aber wenn Sie den Parameter "SkipNetworkProfileCheck" verwenden, Enable-PSRemoting erfolgreich und erstellt eine Firewallregel, die Datenverkehr aus demselben lokalen Subnetz zulässt.
Anmerkung
In Windows PowerShell 2.0 werden auf Computern mit Serverversionen von Windows Enable-PSRemoting Firewallregeln erstellt, die den Remotezugriff auf private, domänen- und öffentliche Netzwerke ermöglichen. Auf Computern mit Clientversionen von Windows erstellt Enable-PSRemoting Firewallregeln, die den Remotezugriff nur in privaten und Domänennetzwerken zulassen.
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 cmdlet Set-NetFirewallRule wird vom Modul NetSecurity exportiert.
Anmerkung
Der Name der Firewallregel kann für verschiedene Versionen von Windows unterschiedlich sein. Verwenden Sie 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 ausnahmen Richtlinie 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 eigenschaft ListeningOn. 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 der WinRM-Dienststarttyp Automatic.
In Clientversionen von Windows ist der WinRM-Dienst jedoch standardmäßig deaktiviert.
Verwenden Sie das folgende Beispiel, um den Starttyp des WinRM-Diensts auf Automatic festzulegen und den Dienst zu 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 Enable-PSRemotingverwenden, werden standardsitzungskonfigurationen auf dem lokalen Computer erstellt. Remotebenutzer verwenden diese Sitzungskonfigurationen, wenn ein Remotebefehl nicht den parameter ConfigurationName enthält.
Wenn die Standardkonfigurationen auf einem Computer nicht registriert oder gelöscht werden, verwenden Sie das cmdlet Enable-PSRemoting, 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 Cmdlet Unregister-PSSessionConfiguration, um die geänderten Sitzungskonfigurationen zu löschen. Verwenden Sie Enable-PSRemoting, um die ursprünglichen Sitzungskonfigurationen wiederherzustellen.
Enable-PSRemoting ändert keine vorhandenen Sitzungskonfigurationen.
Anmerkung
Wenn Enable-PSRemoting die Standardsitzungskonfiguration wiederherstellen, 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
Um den RootSDDL-zu ändern, verwenden Sie das cmdlet Set-Item im laufwerk WSMan:. Verwenden Sie zum Ändern der Sicherheitsbeschreibung einer Sitzungskonfiguration das cmdlet Set-PSSessionConfiguration mit dem SecurityDescriptorSDDL- oder ShowSecurityDescriptorUI- Parametern.
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 Credential des New-PSSession, Enter-PSSession oder Invoke-Command Cmdlets verwenden, um eine Verbindung mit Remoteendpunkten mithilfe alternativer Anmeldeinformationen 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 Ausführen Berechtigungen für die Standardsitzungskonfigurationen auf dem lokalen Computer.
Im folgenden Beispiel wird ein Eigenschaftenblatt geöffnet, in dem Sie die Sicherheitsbeschreibung der Standardkonfiguration Microsoft.PowerShell Sitzung 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 die LocalAccountTokenFilterPolicy Registrierungseintrag verwenden, um das Standardverhalten zu ändern und Remotebenutzern, die Mitglieder der Gruppe "Administratoren" sind, das Ausführen mit Administratorrechten zu ermöglichen.
Vorsicht
Die 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 die LocalAccountTokenFilterPolicy Registrierungswert 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 keiner Domäne beigetreten ist, muss der HTTPS-Transport verwendet werden, oder der Zielcomputer muss der Konfigurationseinstellung "TrustedHosts" hinzugefügt werden.
Der ComputerName Parameter des New-PSSession, Enter-PSSession und 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 Anmeldeinformationen 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 keiner Domäne beigetreten ist, muss der HTTPS-Transport 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 Anmeldeinformationen 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 TrustedHosts Element kann eine durch Trennzeichen getrennte Liste von Computernamen, IP-Adressen und vollqualifizierten Domänennamen enthalten. Wildcards sind zulässig.
Verwenden Sie das laufwerk WSMan:, um die vertrauenswürdige Hostliste anzuzeigen oder zu ändern. Das TrustedHost--Element befindet sich im knoten WSMan:\localhost\Client. Nur Mitglieder der Gruppe "Administratoren" auf dem Computer verfügen über die Berechtigung, die Liste der vertrauenswürdigen Hosts auf dem Computer zu ändern.
Vorsicht
Der Wert, den Sie für das TrustedHosts Element festgelegt haben, 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
Zum Hinzufügen eines Computers zur TrustedHosts Liste eines Remotecomputers verwenden Sie die Connect-WSMan, um eine Verbindung mit WSMan: Remotecomputer herzustellen, auf dem der Remotecomputer Set-Item zum Hinzufügen des Computers verwendet wird.
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 nicht die parameter ConnectionURI oder Port in einem Remotebefehl angibt.
Verwenden Sie Set-Item Cmdlet, um den wert Port 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, ProxyAuthenticationund Parameter proxyCredential des Cmdlets
New-PSSessionOption, um eine Variable zu erstellen, die ein PSSessionOption--Objekt mit den Proxyeinstellungen für Ihr Unternehmen enthält. - Verwenden Sie die Variable, die das PSSessionOption -Objekt mit dem SessionOption-Parameter eines
New-PSSession,Enter-PSSessionoderInvoke-CommandBefehls enthält.
$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 cmdlet New-PSSessionOption finden Sie unter New-PSSessionOption.
Um diese Optionen für alle Remotebefehle in der aktuellen Sitzung festzulegen, legen Sie die $PSSessionOption Einstellungsvariable auf das PSSessionOption Objekt fest, das Sie erstellt haben. 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 einstellungsvariable $PSSessionOption hinzu. Weitere Informationen zu PowerShell-Profilen finden Sie unter about_Profiles.
So erkennen Sie eine 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 operierbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder überprüfen Sie, ob ein Pfad enthalten ist, ob der Pfad korrekt ist, 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 an das $Env:windir\SysWOW64 Verzeichnis weiter.
Daher können Tools im verzeichnis System32, die keine Entsprechungen im Verzeichnis SysWOW64 haben, nicht gefunden werden.
Um die Prozessorarchitektur zu finden, 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.
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.
Ändern der Ausführungsrichtlinie für Import-PSSession und Import-Module
Fehler:
FEHLER: Importmodul: Datei <Dateiname> kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist.
Die cmdlets Import-PSSession 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 Restricted oder AllSignedwerden. 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 parameter Scope von Set-ExecutionPolicy, um eine weniger restriktive Ausführungsrichtlinie für einen einzelnen Prozess festzulegen.
Im folgenden Beispiel wird die Ausführungsrichtlinie beispielsweise 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 parameter ExecutionPolicy 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ö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 einstellungen im Knoten
WSMan:<ComputerName>und die MaxConcurrentOperations, MaxConcurrentOperationsPerUserund MaxConnections Einstellungen im knotenWSMan:<ComputerName>\Service. - Sie können die parameter MaximumReceivedDataSizePerCommand und MaximumReceivedObjectSize Parameter des Cmdlets
New-PSSessionOptionund die$PSSessionOptionEinstellungsvariable verwenden, um den lokalen Computer zu schützen. - Um den Remotecomputer zu schützen, fügen Sie den Sitzungskonfigurationen Einschränkungen mithilfe der MaximumReceivedDataSizePerCommandMB und MaximumReceivedObjectSizeMB Parameter des cmdlets
Register-PSSessionConfigurationhinzu.
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 Knoten "
WSMan:<ComputerName>" und "EnumerationTimeoutMs" und "MaxPacketRetrievalTimeSeconds" Einstellungen im KnotenWSMan:<ComputerName>\Service. - Sie können den lokalen Computer mithilfe der parameter CancelTimeout, IdleTimeout-, OpenTimeout-und OperationTimeout Parameter des Cmdlets
New-PSSessionOptionund der$PSSessionOptionEinstellungsvariable 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-+cein. Verwenden Sie Get-Error im lokalen Host und in der 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 WinRMFü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.