Informationen zur Remotebehandlung
Kurze Beschreibung
Beschreibt, wie Remotevorgänge in PowerShell behandelt werden.
Lange Beschreibung
In diesem Abschnitt werden einige der Probleme beschrieben, die bei der Verwendung der Remotingfeatures von PowerShell auftreten können, die auf WS-Management Technologie basieren, und es werden Lösungen für diese Probleme vorgeschlagen.
Informationen zur Konfiguration und grundlegenden Verwendung finden Sie unter about_Remote und about_Remote_Requirements , bevor Sie PowerShell-Remoting verwenden. Außerdem enthalten die Hilfethemen für die einzelnen Remoting-Cmdlets, insbesondere die Parameterbeschreibungen, nützliche Informationen, die Ihnen helfen sollen, Probleme zu vermeiden.
Hinweis
Starten Sie PowerShell mit der Option Als Administrator ausführen , um Einstellungen für den lokalen Computer im Laufwerk WSMan: anzuzeigen oder zu ändern, einschließlich Änderungen an den Sitzungskonfigurationen, vertrauenswürdigen Hosts, Ports oder Listenern.
Behandeln von Berechtigungs- und Authentifizierungsproblemen
In diesem Abschnitt werden Remotingprobleme im Zusammenhang mit Benutzer- und Computerberechtigungen und Remotinganforderungen erläutert.
Ausführen als Administrator
ERROR: Access is denied. You need to run this cmdlet from an elevated
process.
Um eine Remotesitzung auf dem lokalen Computer zu starten oder die Einstellungen für den lokalen Computer im Laufwerk WSMan: anzuzeigen oder zu ändern, einschließlich Änderungen an den Sitzungskonfigurationen, vertrauenswürdigen Hosts, Ports oder Listenern, starten Sie Windows PowerShell mit der Option Als Administrator ausführen.
So starten Sie Windows PowerShell mit der Option Als Administrator ausführen:
Klicken Sie mit der rechten Maustaste auf ein symbol Windows PowerShell (oder Windows PowerShell ISE), und klicken Sie dann auf Als Administrator ausführen.
Um Windows PowerShell mit der Option Als Administrator ausführen in Windows 7 und Windows Server 2008 R2 zu starten.
Klicken Sie auf der Windows-Taskleiste mit der rechten Maustaste auf das Symbol Windows PowerShell, und klicken Sie dann auf Als Administrator ausführen.
In Windows Server 2008 R2 ist das symbol Windows PowerShell standardmäßig an die Taskleiste angeheftet.
Aktivieren von Remoting
ERROR: ACCESS IS DENIED
or
ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to
listen for requests on the correct port and HTTP URL.
Es ist keine Konfiguration erforderlich, damit ein Computer Remotebefehle senden kann. Um Jedoch Remotebefehle empfangen zu können, muss PowerShell-Remoting auf dem Computer aktiviert sein. Die Aktivierung umfasst das Starten des WinRM-Diensts, das Festlegen des Starttyps für den WinRM-Dienst auf Automatisch, das Erstellen von Listenern für HTTP- und HTTPS-Verbindungen und das Erstellen von Standardsitzungskonfigurationen.
Windows PowerShell Remoting ist unter Windows Server 2012 und neueren Versionen von Windows Server standardmäßig aktiviert. Führen Sie auf allen anderen Systemen das Enable-PSRemoting
Cmdlet aus, um Remoting zu aktivieren. Sie können das Enable-PSRemoting
Cmdlet auch ausführen, um Remoting auf Windows Server 2012 und neueren Versionen von Windows Server erneut zu aktivieren, wenn Remoting deaktiviert ist.
Verwenden Sie das Cmdlet, um einen Computer für den Enable-PSRemoting
Empfang von Remotebefehlen zu konfigurieren. Der folgende Befehl aktiviert alle erforderlichen Remoteeinstellungen, aktiviert die Sitzungskonfigurationen und startet den WinRM-Dienst neu, um die Änderungen wirksam zu machen.
Enable-PSRemoting
Geben Sie Folgendes ein, um alle Benutzereingabeaufforderungen zu unterdrücken:
Enable-PSRemoting -Force
Weitere Informationen finden Sie unter Enable-PSRemoting.
Aktivieren von Remoting in einem Unternehmen
ERROR: ACCESS IS DENIED
or
ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.
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 zum Konfigurieren von Listenern für Remoting die Gruppenrichtlinie Automatische Konfiguration von Listenern zulassen .
Um den Starttyp der Windows-Remoteverwaltung (WinRM) auf mehreren Computern auf Automatisch festzulegen, verwenden Sie das
Set-Service
Cmdlet.Verwenden Sie zum Aktivieren einer Firewallausnahme die Gruppenrichtlinie Windows-Firewall: Lokale Portausnahmen zulassen .
Aktivieren von Listenern mithilfe einer Gruppenrichtlinie
ERROR: ACCESS IS DENIED
or
ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.
Um die Listener für alle Computer in einer Domäne zu konfigurieren, aktivieren Sie die Richtlinie Automatische Konfiguration von Listenern zulassen 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
ERROR: Unable to check the status of the firewall
Das Enable-PSRemoting
Cmdlet gibt diesen Fehler zurück, wenn das lokale Netzwerk öffentlich ist und der SkipNetworkProfileCheck-Parameter im Befehl nicht verwendet wird.
Unter Serverversionen von Windows Enable-PSRemoting
ist auf allen Netzwerkstandorttypen 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.
Unter Clientversionen von Windows Enable-PSRemoting
ist in privaten und Domänennetzwerken erfolgreich. Standardmäßig tritt in öffentlichen Netzwerken ein Fehler auf. Wenn Sie jedoch den SkipNetworkProfileCheck-Parameter verwenden, Enable-PSRemoting
wird erfolgreich ausgeführt, und es wird eine Firewallregel erstellt, die Datenverkehr aus demselben lokalen Subnetz zulässt.
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
In Windows PowerShell 2.0 erstellt auf Computern, auf denen Serverversionen von Windows ausgeführt werden, Firewallregeln, Enable-PSRemoting
die 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.
Aktivieren einer Firewall-Ausnahme mithilfe einer Gruppenrichtlinie
ERROR: ACCESS IS DENIED
or
ERROR: The connection to the remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.
Um eine Firewallausnahme für auf allen Computern in einer Domäne zu aktivieren, aktivieren Sie die Richtlinie Windows-Firewall: Lokale Portausnahmen zulassen im folgenden Gruppenrichtlinie Pfad:
Computer Configuration\Administrative Templates\Network
\Network Connections\Windows Firewall\Domain Profile
Mit dieser Richtlinie können Mitglieder der Gruppe Administratoren auf dem Computer die Windows-Firewall in Systemsteuerung verwenden, um eine Firewall-Ausnahme für den Windows-Remoteverwaltungsdienst zu erstellen.
Wenn die Richtlinienkonfiguration falsch ist, erhalten Sie möglicherweise den folgenden Fehler:
The client cannot connect to the destination specified in the request. Verify
that the service on the destination is running and is accepting requests.
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.
PS> Get-WSManInstance winrm/config/listener -Enumerate
cfg : https://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
ERROR: ACCESS IS DENIED
PowerShell-Remoting hängt vom Windows-Remoteverwaltungsdienst (WinRM) ab. Der Dienst muss ausgeführt werden, um Remotebefehle zu unterstützen.
Bei Serverversionen von Windows ist der Starttyp des Windows-Remoteverwaltungsdiensts (WinRM) Automatisch.
Unter Clientversionen von Windows ist der WinRM-Dienst jedoch standardmäßig deaktiviert.
Verwenden Sie Set-Service
das Cmdlet, um den Starttyp eines Diensts auf einem Remotecomputer festzulegen.
Um den Befehl auf mehreren Computern auszuführen, können Sie eine Textdatei oder CSV-Datei mit den Computernamen erstellen.
Mit den folgenden Befehlen wird beispielsweise eine Liste der Computernamen aus der Servers.txt
Datei abgerufen und dann der Starttyp des WinRM-Diensts auf allen Computern auf Automatisch festgelegt.
$servers = Get-Content servers.txt
Set-Service WinRM -ComputerName $servers -startuptype Automatic
Verwenden Sie zum Anzeigen der Ergebnisse das Get-WMIObject
Cmdlet mit dem Win32_Service-Objekt . Weitere Informationen finden Sie unter Set-Service.
So erstellen Sie die Standardsitzungskonfigurationen neu
ERROR: ACCESS IS DENIED
Um eine Verbindung mit dem lokalen Computer herzustellen und Befehle remote auszuführen, muss der lokale Computer Sitzungskonfigurationen für Remotebefehle enthalten.
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 Standardsitzungskonfigurationen wiederherstellen möchten, verwenden Sie das Unregister-PSSessionConfiguration
Cmdlet, um die geänderten Sitzungskonfigurationen zu löschen, und verwenden Sie dann das Enable-PSRemoting
Cmdlet, um sie wiederherzustellen.
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, die standardmäßig sicher ist.
Geben Sie Folgendes ein, um den RootSDDL-Sicherheitsdeskriptor anzuzeigen:
Get-Item wsman:\localhost\Service\RootSDDL
Verwenden Sie zum Ändern der RootSDDL das Set-Item
Cmdlet im Laufwerk WSMan: . Verwenden Sie zum Ändern des Sicherheitsdeskriptors einer Sitzungskonfiguration das Set-PSSessionConfiguration
Cmdlet mit den Parametern SecurityDescriptorSDDL oder ShowSecurityDescriptorUI .
Weitere Informationen zum WSMan:-Laufwerk finden Sie im Hilfethema für den WSMan-Anbieter ("Get-Help wsman").
Bereitstellen von Administratoranmeldeinformationen
ERROR: ACCESS IS DENIED
Um eine PSSession zu erstellen oder Befehle auf einem Remotecomputer auszuführen, muss der aktuelle Benutzer standardmäßig Mitglied der Gruppe Administratoren auf dem Remotecomputer sein. Anmeldeinformationen sind manchmal erforderlich, auch wenn der aktuelle Benutzer bei einem Konto angemeldet ist, das Mitglied der Gruppe Administratoren ist.
Wenn der aktuelle Benutzer Mitglied der Gruppe Administratoren auf dem Remotecomputer ist oder die Anmeldeinformationen eines Mitglieds der Gruppe Administratoren angeben kann, verwenden Sie den Credential-Parameter des New-PSSession
Cmdlets oder Invoke-Command
, Enter-PSSession
um eine Remoteverbindung herzustellen.
Der folgende Befehl stellt beispielsweise die Anmeldeinformationen eines Administrators bereit.
Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01
Weitere Informationen zum Credential-Parameter finden Sie unter New-PSSession, Enter-PSSession oder Invoke-Command.
Aktivieren von Remoting für Benutzer ohne Administratorrechte
ERROR: ACCESS IS DENIED
Um eine PSSession einzurichten oder einen Befehl auf einem Remotecomputer auszuführen, muss der Benutzer über die Berechtigung zum Verwenden der Sitzungskonfigurationen auf dem Remotecomputer verfügen.
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.
Mit dem folgenden Befehl wird ein Eigenschaftenblatt geöffnet, mit dem Sie den Sicherheitsdeskriptor der Microsoft.PowerShell-Standardsitzungskonfiguration 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
ERROR: ACCESS IS DENIED
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 jedoch 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.
Um die Richtlinie zu ändern, verwenden Sie den folgenden Befehl, um den Wert des Registrierungseintrags LocalAccountTokenFilterPolicy auf 1 festzulegen.
New-ItemProperty -Name LocalAccountTokenFilterPolicy `
-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
-PropertyType DWord -Value 1
Verwenden einer IP-Adresse in einem Remotebefehl
ERROR: The WinRM client cannot process the request. If the authentication
scheme is different from Kerberos, or if the client computer is not joined to a
domain, then HTTPS transport must be used or the destination machine must be
added to the TrustedHosts configuration setting.
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, wird die NTLM-Authentifizierung standardmäßig verwendet, wenn Sie eine IP-Adresse angeben.
Bei Verwendung der NTLM-Authentifizierung ist das folgende Verfahren für Remoting erforderlich.
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 die Anmeldeinformationen des aktuellen Benutzers übermitteln.
Herstellen einer Remoteverbindung über einen arbeitsgruppenbasierten Computer
ERROR: The WinRM client cannot process the request. If the authentication
scheme is different from Kerberos, or if the client computer is not joined to a
domain, then HTTPS transport must be used or the destination machine must be
added to the TrustedHosts configuration setting.
Wenn sich der lokale Computer nicht in einer Domäne befindet, ist das folgende Verfahren für Remoting erforderlich.
Konfigurieren Sie den Computer für den HTTPS-Transport, oder fügen Sie die Namen 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 Benutzerkonten in Systemsteuerung, um das Kennwort für Ihr Benutzerkonto festzulegen.
Verwenden Sie den Credential-Parameter in allen Remotebefehlen.
Dies ist auch dann erforderlich, wenn Sie die Anmeldeinformationen des aktuellen Benutzers übermitteln.
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 zum Anzeigen oder Ändern der Liste der vertrauenswürdigen Hosts das Laufwerk WSMan: . 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
Sie können auch das Set-Location
Cmdlet (alias = cd) verwenden, um durch das WSMan:-Laufwerk zum Speicherort zu navigieren. Beispiel:
cd WSMan:\localhost\Client; dir
Um der Liste der vertrauenswürdigen Hosts alle Computer hinzuzufügen, verwenden Sie den folgenden Befehl, der den Wert * (alle) in ComputerName eingibt.
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 der Liste der vertrauenswürdigen Hosts hinzugefügt.
Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com
Verwenden Sie das folgende Befehlsformat, um die Namen bestimmter Computer zur Liste der vertrauenswürdigen Hosts hinzuzufügen:
Set-Item wsman:\localhost\Client\TrustedHosts -Value <ComputerName>
Wobei jeder Wert <ComputerName>
das folgende Format haben muss:
<Computer>.<Domain>.<Company>.<top-level-domain>
Beispiel:
$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, und legen Sie den Wert dann auf eine durch Trennzeichen getrennte Liste fest, die die aktuellen und neuen Werte enthält.
Verwenden Sie beispielsweise den folgenden Befehl, um den Server01-Computer einer vorhandenen Liste vertrauenswürdiger Hosts hinzuzufügen.
$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).value
Set-Item wsman:\localhost\Client\TrustedHosts -Value `
"$curValue, Server01.Domain01.Fabrikam.com"
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 das Connect-WSMan
Cmdlet, um dem Laufwerk WSMan: auf dem lokalen Computer einen Knoten für den Remotecomputer hinzuzufügen. Verwenden Sie dann einen Set-Item
Befehl, um den Computer hinzuzufügen.
Weitere Informationen zum Connect-WSMan
Cmdlet finden Sie unter Connect-WSMan.
Behandeln von Problemen mit der Computerkonfiguration
In diesem Abschnitt werden Remotingprobleme erläutert, die sich auf bestimmte Konfigurationen eines Computers, einer Domäne oder eines Unternehmens beziehen.
Konfigurieren von Remoting an alternativen Ports
ERROR: The connection to the specified remote host was refused. Verify that the
WS-Management service is running on the remote host and configured to listen
for requests on the correct port and HTTP URL.
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.
Um den Standardport zu ändern, den PowerShell verwendet, verwenden Sie Set-Item
das Cmdlet im Laufwerk WSMan: , um den Portwert im Blattknoten des Listeners 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
ERROR: The client cannot connect to the destination specified in the request.
Verify that the service on the destination is running and is accepting
requests.
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. Die folgenden Einstellungen sind verfügbar:
- ProxyAccessType
- ProxyAuthentication
- ProxyCredential
Gehen Sie wie folgt vor, um diese Optionen für einen bestimmten Befehl festzulegen:
Verwenden Sie die Parameter ProxyAccessType, ProxyAuthentication und ProxyCredential des
New-PSSessionOption
Cmdlets, um ein Sitzungsoptionsobjekt mit den Proxyeinstellungen für Ihr Unternehmen zu erstellen. Speichern Des Optionsobjekts ist eine Variable.Verwenden Sie die Variable, die das Optionsobjekt enthält, als Wert des SessionOption-Parameters eines
New-PSSession
- oderInvoke-Command
Enter-PSSession
-Befehls.
Der folgende Befehl erstellt beispielsweise ein Sitzungsoptionsobjekt mit Proxysitzungsoptionen und verwendet dann das -Objekt, um eine Remotesitzung zu erstellen.
$SessionOption = New-PSSessionOption -ProxyAccessType IEConfig `
-ProxyAuthentication Negotiate -ProxyCredential Domain01\User01
New-PSSession -ConnectionURI https://www.fabrikam.com
Weitere Informationen zum New-PSSessionOption
Cmdlet finden Sie unter New-PSSessionOption.
Verwenden Sie zum Festlegen dieser Optionen für alle Remotebefehle in der aktuellen Sitzung das Optionsobjekt, das New-PSSessionOption
im Wert der $PSSessionOption
Einstellungsvariablen erstellt wird. Weitere Informationen finden Sie unter about_Preference_Variables.
Um diese Optionen für alle Remotebefehle für alle PowerShell-Sitzungen auf dem lokalen Computer festzulegen, fügen Sie ihrem PowerShell-Profil die $PSSessionOption
Einstellungsvariable hinzu. Weitere Informationen zu PowerShell-Profilen finden Sie unter about_Profiles.
Erkennen einer 32-Bit-Sitzung auf einem 64-Bit-Computer
ERROR: The term "<tool-Name>" is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.
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 die Windows-Remoteverwaltung (WinRM) einen WOW64-Prozess, und Windows leitet automatisch alle Verweise auf das $env:Windir\System32
Verzeichnis an das $env:Windir\SysWOW64
Verzeichnis um.
Wenn Sie daher versuchen, Tools im System32-Verzeichnis zu verwenden, die keine Entsprechungen im Verzeichnis SysWow64 haben, wie Defrag.exe
z. B. , können die Tools nicht im Verzeichnis gefunden werden.
Um die Prozessorarchitektur zu ermitteln, die in der Sitzung verwendet wird, verwenden Sie den Wert der umgebungsvariablen PROCESSOR_ARCHITECTURE . Der folgende Befehl sucht die Prozessorarchitektur der Sitzung in der $s
Variablen.
$s = New-PSSession -ComputerName Server01 -ConfigurationName CustomShell
Invoke-Command -Session $s {$env:PROCESSOR_ARCHITECTURE}
x86
Weitere Informationen zu Sitzungskonfigurationen 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
ERROR: Import-Module: File <filename> cannot be loaded because the
execution of scripts is disabled on this system.
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, entweder mithilfe Import-PSSession
von oder Import-Module
, kann die Ausführungsrichtlinie in der aktuellen Sitzung nicht eingeschränkt oder AllSigned sein. Informationen zu PowerShell-Ausführungsrichtlinien finden Sie unter about_Execution_Policies.
Um die Module zu importieren, ohne die Ausführungsrichtlinie für den lokalen Computer zu ändern, die in der Registrierung festgelegt ist, verwenden Sie den Scope-Parameter von, um eine weniger restriktive Ausführungsrichtlinie Set-ExecutionPolicy
für einen einzelnen Prozess festzulegen.
Der folgende Befehl startet beispielsweise einen Prozess mit der Ausführungsrichtlinie RemoteSigned
. Die Änderung der Ausführungsrichtlinie wirkt sich nur auf den aktuellen Prozess aus und ändert nicht die Registrierungseinstellung PowerShell ExecutionPolicy .
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.
PowerShell.exe -ExecutionPolicy RemoteSigned
Weitere Informationen zu Ausführungsrichtlinien finden Sie unter about_Execution_Policies. Geben Sie Folgendes ein, um weitere Informationen zu erhalten: PowerShell.exe -?
.
Festlegen und Ändern von Kontingenten
ERROR: The total data received from the remote client exceeded allowed
maximum.
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.
Die folgenden Kontingente sind in der Basiskonfiguration verfügbar.
Der WSMan-Anbieter (WSMan:) stellt mehrere Kontingenteinstellungen bereit, z. B. die Einstellungen MaxEnvelopeSizeKB und MaxProviderRequests im
WSMan:<ComputerName>
Knoten sowie die Einstellungen MaxConcurrentOperations, MaxConcurrentOperationsPerUser und MaxConnections imWSMan:<ComputerName>\Service
Knoten.Sie können den lokalen Computer schützen, indem Sie die Parameter MaximumReceivedDataSizePerCommand und MaximumReceivedObjectSize des
New-PSSessionOption
Cmdlets und der$PSSessionOption
Einstellungsvariablen verwenden.Sie können den Remotecomputer schützen, indem Sie den Sitzungskonfigurationen Einschränkungen hinzufügen, z. B. mit den Parametern MaximumReceivedDataSizePerCommandMB und MaximumReceivedObjectSizeMB des
Register-PSSessionConfiguration
Cmdlets.
Wenn Kontingente mit einem Befehl in Konflikt geraten, generiert PowerShell einen Fehler.
Um den Fehler zu beheben, ändern Sie den Remotebefehl so, dass er dem Kontingent entspricht. Oder bestimmen Sie die Quelle des Kontingents, und erhöhen Sie dann 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.
Set-PSSessionConfiguration -Name microsoft.PowerShell `
-MaximumReceivedObjectSizeMB 11 -Force
Weitere Informationen zum New-PSSessionOption
Cmdlet finden Sie unter New-PSSessionOption
.
Weitere Informationen zu den WS-Management Kontingenten finden Sie unter about_WSMan_Provider.
Beheben von Timeoutfehlern
ERROR: The WS-Management service cannot complete the operation within
the time specified in OperationTimeout.
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.
Die folgenden Timeouts sind in der Basiskonfiguration verfügbar.
Der WSMan-Anbieter (WSMan:) stellt mehrere clientseitige und dienstseitige Timeouteinstellungen bereit, z. B. die Einstellung MaxTimeoutms im
WSMan:<ComputerName>
Knoten und die Einstellungen EnumerationTimeoutms und MaxPacketRetrievalTimeSeconds imWSMan:<ComputerName>\Service
Knoten.Sie können den lokalen Computer schützen, indem Sie die Parameter CancelTimeout, IdleTimeout, OpenTimeout und OperationTimeout des
New-PSSessionOption
Cmdlets und der$PSSessionOption
Einstellungsvariablen verwenden.Sie können den Remotecomputer auch schützen, indem Sie Timeoutwerte programmgesteuert in der Sitzungskonfiguration für die Sitzung festlegen.
Wenn ein Timeoutwert den Abschluss eines Vorgangs nicht zulässt, beendet PowerShell den Vorgang und generiert einen Fehler.
Um den Fehler zu beheben, ändern Sie den Befehl so, dass er innerhalb des Timeoutintervalls abgeschlossen wird, oder bestimmen Sie die Quelle des Timeoutlimits, und erhöhen Sie das Timeoutintervall, damit der Befehl abgeschlossen werden kann.
Die folgenden Befehle verwenden beispielsweise das New-PSSessionOption
Cmdlet, um ein Sitzungsoptionsobjekt mit einem OperationTimeout-Wert von 4 Minuten (in MS) zu erstellen und dann das Sitzungsoptionsobjekt zum Erstellen einer Remotesitzung zu verwenden.
$pso = New-PSSessionoption -OperationTimeout 240000
New-PSSession -ComputerName Server01 -sessionOption $pso
Weitere Informationen zu den WS-Management Timeouts finden Sie im Hilfethema für den WSMan-Anbieter (Typ Get-Help WSMan
).
Weitere Informationen zum New-PSSessionOption
Cmdlet finden Sie unter New-PSSessionOption.
Problembehandlung bei nicht reagierenden Verhaltensweisen
In diesem Abschnitt werden Remotingprobleme erläutert, die den Abschluss eines Befehls verhindern und die Rückgabe der PowerShell-Eingabeaufforderung verhindern oder verzögern.
Unterbrechen eines Befehls
Einige native Windows-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. Geben Sie den lokalen Host und die Remotesitzung ein, $error
um alle möglicherweise gemeldeten Fehler anzuzeigen.
Wiederherstellen nach einem Vorgangsfehler
ERROR: The I/O operation has been aborted because of either a thread exit
or an application request.
Dieser Fehler wird zurückgegeben, wenn ein Vorgang beendet wird, bevor er abgeschlossen wird. 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
Authentifizierung
Nur die Standardauthentifizierung funktioniert unter macOS, und der Versuch, andere Authentifizierungsschemas zu verwenden, kann zum Absturz des Prozesses führen.
Weitere Informationen finden Sie in den Anweisungen zur OMI-Authentifizierung .