about_Remote_Troubleshooting
Krótki opis
Opisuje sposób rozwiązywania problemów z operacjami zdalnymi w programie PowerShell.
Długi opis
W tej sekcji opisano niektóre problemy, które mogą wystąpić podczas korzystania z funkcji komunikacji zdalnej programu PowerShell opartych na technologii WS-Management i sugeruje rozwiązania tych problemów.
Przed rozpoczęciem komunikacji zdalnej programu PowerShell zobacz about_Remote i about_Remote_Requirements , aby uzyskać wskazówki dotyczące konfiguracji i podstawowego użycia. Ponadto tematy Pomocy dla każdego z poleceń cmdlet komunikacji zdalnie, szczególnie opisy parametrów, zawierają przydatne informacje, które ułatwiają uniknięcie problemów.
Uwaga
Aby wyświetlić lub zmienić ustawienia komputera lokalnego na dysku WSMan: w tym zmiany konfiguracji sesji, zaufanych hostów, portów lub odbiorników, uruchom program PowerShell przy użyciu opcji Uruchom jako administrator .
Rozwiązywanie problemów z uprawnieniami i uwierzytelnianiem
W tej sekcji omówiono problemy z komunikacjią zdalną, które są związane z uprawnieniami użytkowników i komputerów oraz wymaganiami dotyczącymi komunikacji zdalniej.
Jak uruchomić jako administrator
ERROR: Access is denied. You need to run this cmdlet from an elevated
process.
Aby uruchomić sesję zdalną na komputerze lokalnym lub wyświetlić lub zmienić ustawienia komputera lokalnego w programie WSMan: dysk, w tym zmiany konfiguracji sesji, zaufanych hostów, portów lub odbiorników, uruchom Windows PowerShell z opcją Uruchom jako administrator.
Aby rozpocząć Windows PowerShell z opcją Uruchom jako administrator:
Kliknij prawym przyciskiem myszy ikonę Windows PowerShell (lub Windows PowerShell ISE), a następnie kliknij polecenie Uruchom jako administrator.
Aby rozpocząć Windows PowerShell z opcją Uruchom jako administrator w systemach Windows 7 i Windows Server 2008 R2.
Na pasku zadań systemu Windows kliknij prawym przyciskiem myszy ikonę Windows PowerShell, a następnie kliknij polecenie Uruchom jako administrator.
W systemie Windows Server 2008 R2 ikona Windows PowerShell jest domyślnie przypięta do paska zadań.
Jak włączyć zdalną obsługę zdalną
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.
Do umożliwienia komputerowi wysyłania poleceń zdalnych nie jest wymagana żadna konfiguracja. Jednak aby odbierać polecenia zdalne, komunikacja zdalna programu PowerShell musi być włączona na komputerze. Włączenie obejmuje uruchomienie usługi WinRM, ustawienie typu uruchamiania usługi WinRM na automatyczne, tworzenie odbiorników dla połączeń HTTP i HTTPS oraz tworzenie domyślnych konfiguracji sesji.
Windows PowerShell komunikacja zdalna jest domyślnie włączona w Windows Server 2012 i nowszych wersjach systemu Windows Server. We wszystkich innych systemach uruchom Enable-PSRemoting
polecenie cmdlet , aby włączyć zdalną obsługę zdalną. Możesz również uruchomić polecenie cmdlet, Enable-PSRemoting
aby ponownie włączyć zdalną obsługę zdalną w Windows Server 2012 i nowszych wersjach systemu Windows Server, jeśli komunikacja zdalna jest wyłączona.
Aby skonfigurować komputer do odbierania poleceń zdalnych, użyj Enable-PSRemoting
polecenia cmdlet . Następujące polecenie włącza wszystkie wymagane ustawienia zdalne, włącza konfiguracje sesji i uruchamia ponownie usługę WinRM, aby wprowadzić zmiany w życie.
Enable-PSRemoting
Aby pominąć wszystkie monity użytkownika, wpisz:
Enable-PSRemoting -Force
Aby uzyskać więcej informacji, zobacz Enable-PSRemoting.
Jak włączyć komunikacja zdalną w przedsiębiorstwie
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.
Aby umożliwić pojedynczemu komputerowi odbieranie zdalnych poleceń programu PowerShell i akceptowanie połączeń, użyj Enable-PSRemoting
polecenia cmdlet .
Aby włączyć komunikacja zdalną dla wielu komputerów w przedsiębiorstwie, można użyć następujących opcji skalowanych.
Aby skonfigurować odbiorniki na potrzeby komunikacji wirtualnej, włącz zasady grupy Zezwalaj na automatyczną konfigurację odbiorników .
Aby ustawić typ uruchamiania zdalnego zarządzania systemem Windows (WinRM) na automatyczne na wielu komputerach, użyj
Set-Service
polecenia cmdlet .Aby włączyć wyjątek zapory, użyj zasad grupy Zezwalaj na wyjątki portów lokalnych .
Jak włączyć odbiorniki przy użyciu zasad grupy
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.
Aby skonfigurować odbiorniki dla wszystkich komputerów w domenie, włącz zasady Zezwalaj na automatyczną konfigurację odbiorników w następującej ścieżce zasady grupy:
Computer Configuration\Administrative Templates\Windows Components
\Windows Remote Management (WinRM)\WinRM service
Włącz zasady i określ filtry IPv4 i IPv6. Dozwolone są symbole wieloznaczne (*
).
Jak włączyć komunikacja zdalną w sieciach publicznych
ERROR: Unable to check the status of the firewall
Polecenie Enable-PSRemoting
cmdlet zwraca ten błąd, gdy sieć lokalna jest publiczna, a parametr SkipNetworkProfileCheck nie jest używany w poleceniu .
W przypadku wersji serwera systemu Windows Enable-PSRemoting
program kończy się powodzeniem we wszystkich typach lokalizacji sieciowych. Tworzy reguły zapory, które umożliwiają zdalny dostęp do sieci prywatnych i domen ("Strona główna" i "Praca"). W przypadku sieci publicznych tworzy reguły zapory, które zezwalają na dostęp zdalny z tej samej podsieci lokalnej.
W przypadku wersji klienckich systemu Windows Enable-PSRemoting
powodzenie w sieciach prywatnych i domenowych. Domyślnie kończy się niepowodzeniem w sieciach publicznych, ale jeśli używasz parametru SkipNetworkProfileCheck , program zakończy się pomyślnie i utworzy regułę zapory, Enable-PSRemoting
która zezwala na ruch z tej samej podsieci lokalnej.
Aby usunąć ograniczenie podsieci lokalnej w sieciach publicznych i zezwolić na dostęp zdalny z dowolnej lokalizacji, uruchom następujące polecenie:
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
Polecenie Set-NetFirewallRule
cmdlet jest eksportowane przez moduł NetSecurity.
Uwaga
Nazwa reguły zapory może być inna dla różnych wersji systemu Windows. Użyj polecenia Get-NetFirewallRule
, aby wyświetlić listę reguł. Przed włączeniem reguły zapory wyświetl ustawienia zabezpieczeń w regule, aby sprawdzić, czy konfiguracja jest odpowiednia dla danego środowiska.
Uwaga
W Windows PowerShell 2.0 na komputerach z uruchomionymi wersjami serwera systemu Windows tworzy reguły zapory, Enable-PSRemoting
które zezwalają na dostęp zdalny w sieciach prywatnych, domenowych i publicznych. Na komputerach z uruchomionymi wersjami klienta systemu Windows tworzy reguły zapory, Enable-PSRemoting
które zezwalają na dostęp zdalny tylko w sieciach prywatnych i domenowych.
Jak włączyć wyjątek zapory przy użyciu zasad grupy
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.
Aby włączyć wyjątek zapory dla wszystkich komputerów w domenie, włącz Zaporę systemu Windows: Zezwalaj na lokalne wyjątki portów w następującej ścieżce zasady grupy:
Computer Configuration\Administrative Templates\Network
\Network Connections\Windows Firewall\Domain Profile
Te zasady umożliwiają członkom grupy Administratorzy na komputerze korzystanie z Zapory systemu Windows w Panel sterowania w celu utworzenia wyjątku zapory dla usługi zdalnego zarządzania systemem Windows.
Jeśli konfiguracja zasad jest niepoprawna, może zostać wyświetlony następujący błąd:
The client cannot connect to the destination specified in the request. Verify
that the service on the destination is running and is accepting requests.
Błąd konfiguracji w zasadach powoduje pustą wartość właściwości ListeningOn . Użyj następującego polecenia, aby sprawdzić wartość.
PS> 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 : {}
Jak ustawić typ uruchamiania usługi WinRM
ERROR: ACCESS IS DENIED
Komunikacja zdalna programu PowerShell zależy od usługi Zdalne zarządzanie systemem Windows (WinRM). Aby obsługiwać polecenia zdalne, usługa musi być uruchomiona.
W wersjach serwera systemu Windows typ uruchamiania usługi Zdalne zarządzanie systemem Windows (WinRM) jest automatyczny.
Jednak w wersjach klienckich systemu Windows usługa WinRM jest domyślnie wyłączona.
Aby ustawić typ uruchamiania usługi na komputerze zdalnym, użyj Set-Service
polecenia cmdlet .
Aby uruchomić polecenie na wielu komputerach, można utworzyć plik tekstowy lub plik CSV nazw komputerów.
Na przykład następujące polecenia pobierają listę nazw komputerów z Servers.txt
pliku, a następnie ustawiają typ uruchamiania usługi WinRM na wszystkich komputerach na automatyczne.
$servers = Get-Content servers.txt
Set-Service WinRM -ComputerName $servers -startuptype Automatic
Aby wyświetlić wyniki, użyj Get-WMIObject
polecenia cmdlet z obiektem Win32_Service . Aby uzyskać więcej informacji, zobacz Set-Service .
Jak ponownie utworzyć konfiguracje sesji domyślnej
ERROR: ACCESS IS DENIED
Aby nawiązać połączenie z komputerem lokalnym i uruchomić polecenia zdalnie, komputer lokalny musi zawierać konfiguracje sesji dla poleceń zdalnych.
W przypadku korzystania z programu Enable-PSRemoting
program tworzy domyślne konfiguracje sesji na komputerze lokalnym. Użytkownicy zdalni używają tych konfiguracji sesji za każdym razem, gdy polecenie zdalne nie zawiera parametru ConfigurationName .
Jeśli konfiguracje domyślne na komputerze są wyrejestrowane lub usunięte, użyj Enable-PSRemoting
polecenia cmdlet , aby je ponownie utworzyć. Tego polecenia cmdlet można wielokrotnie używać. Nie generuje błędów, jeśli funkcja jest już skonfigurowana.
Jeśli zmienisz domyślne konfiguracje sesji i chcesz przywrócić oryginalne konfiguracje sesji domyślnej, użyj Unregister-PSSessionConfiguration
polecenia cmdlet , aby usunąć zmienione konfiguracje sesji, a następnie użyj Enable-PSRemoting
polecenia cmdlet , aby je przywrócić.
Enable-PSRemoting
program nie zmienia istniejących konfiguracji sesji.
Uwaga
Podczas Enable-PSRemoting
przywracania domyślnej konfiguracji sesji nie tworzy jawnych deskryptorów zabezpieczeń dla konfiguracji. Zamiast tego konfiguracje dziedziczą deskryptor zabezpieczeń rootSDDL, który jest domyślnie bezpieczny.
Aby wyświetlić deskryptor zabezpieczeń RootSDDL, wpisz:
Get-Item wsman:\localhost\Service\RootSDDL
Aby zmienić plik RootSDDL, użyj Set-Item
polecenia cmdlet w dysku WSMan: . Aby zmienić deskryptor zabezpieczeń konfiguracji sesji, użyj Set-PSSessionConfiguration
polecenia cmdlet z parametrami SecurityDescriptorSDDL lub ShowSecurityDescriptorUI .
Aby uzyskać więcej informacji na temat narzędzia WSMan: dysk, zobacz temat Pomoc dla dostawcy WSMan ("Get-Help wsman").
Jak podać poświadczenia administratora
ERROR: ACCESS IS DENIED
Aby utworzyć pssession lub uruchomić polecenia na komputerze zdalnym, domyślnie bieżący użytkownik musi być członkiem grupy Administratorzy na komputerze zdalnym. Poświadczenia są czasami wymagane nawet wtedy, gdy bieżący użytkownik jest zalogowany na koncie należącym do grupy Administratorzy.
Jeśli bieżący użytkownik jest członkiem grupy Administratorzy na komputerze zdalnym lub może podać poświadczenia członka grupy Administratorzy, użyj parametru New-PSSession
Enter-PSSession
Credential programu lub Invoke-Command
poleceń cmdlet, aby połączyć się zdalnie.
Na przykład następujące polecenie udostępnia poświadczenia administratora.
Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01
Aby uzyskać więcej informacji na temat parametru Credential , zobacz New-PSSession, Enter-PSSession lub Invoke-Command.
Jak włączyć komunikacja zdalną dla użytkowników niebędących administratorami
ERROR: ACCESS IS DENIED
Aby ustanowić sesję PSSession lub uruchomić polecenie na komputerze zdalnym, użytkownik musi mieć uprawnienia do korzystania z konfiguracji sesji na komputerze zdalnym.
Domyślnie tylko członkowie grupy Administratorzy na komputerze mają uprawnienia do korzystania z domyślnych konfiguracji sesji. W związku z tym tylko członkowie grupy Administratorzy mogą łączyć się z komputerem zdalnie.
Aby umożliwić innym użytkownikom łączenie się z komputerem lokalnym, nadaj użytkownikowi uprawnienia Wykonaj do domyślnych konfiguracji sesji na komputerze lokalnym.
Następujące polecenie otwiera arkusz właściwości, który umożliwia zmianę deskryptora zabezpieczeń domyślnej konfiguracji sesji Microsoft.PowerShell na komputerze lokalnym.
Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI
Aby uzyskać więcej informacji, zobacz about_Session_Configurations.
Jak włączyć komunikacja zdalna dla administratorów w innych domenach
ERROR: ACCESS IS DENIED
Gdy użytkownik w innej domenie jest członkiem grupy Administratorzy na komputerze lokalnym, użytkownik nie może połączyć się z komputerem lokalnym zdalnie z uprawnieniami administratora. Domyślnie połączenia zdalne z innych domen są uruchamiane przy użyciu tylko standardowych tokenów uprawnień użytkownika.
Można jednak użyć wpisu rejestru LocalAccountTokenFilterPolicy , aby zmienić domyślne zachowanie i zezwolić zdalnym użytkownikom należącym do grupy Administratorzy na uruchamianie z uprawnieniami administratora.
Przestroga
Wpis LocalAccountTokenFilterPolicy wyłącza ograniczenia zdalne kontroli konta użytkownika dla wszystkich użytkowników wszystkich komputerów, których dotyczy problem. Przed zmianą zasad należy dokładnie rozważyć implikacje tego ustawienia.
Aby zmienić zasady, użyj następującego polecenia, aby ustawić wartość wpisu rejestru LocalAccountTokenFilterPolicy na 1.
New-ItemProperty -Name LocalAccountTokenFilterPolicy `
-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
-PropertyType DWord -Value 1
Jak używać adresu IP w zdalnym poleceniu
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.
Parametr New-PSSession
Enter-PSSession
ComputerName polecenia cmdlet i Invoke-Command
akceptuje adres IP jako prawidłową wartość. Jednak ponieważ uwierzytelnianie Kerberos nie obsługuje adresów IP, uwierzytelnianie NTLM jest domyślnie używane za każdym razem, gdy określisz adres IP.
W przypadku korzystania z uwierzytelniania NTLM poniższa procedura jest wymagana do komunikacji zdalnie.
Skonfiguruj komputer na potrzeby transportu HTTPS lub dodaj adresy IP komputerów zdalnych do listy TrustedHosts na komputerze lokalnym.
Użyj parametru Credential we wszystkich poleceniach zdalnych.
Jest to wymagane nawet w przypadku przesyłania poświadczeń bieżącego użytkownika.
Jak połączyć się zdalnie z komputera opartego na grupie roboczej
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.
Jeśli komputer lokalny nie znajduje się w domenie, poniższa procedura jest wymagana do komunikacji zdalnie.
Skonfiguruj komputer na potrzeby transportu HTTPS lub dodaj nazwy komputerów zdalnych do listy TrustedHosts na komputerze lokalnym.
Sprawdź, czy hasło jest ustawione na komputerze opartym na grupie roboczej. Jeśli hasło nie jest ustawione lub wartość hasła jest pusta, nie można uruchomić poleceń zdalnych.
Aby ustawić hasło dla konta użytkownika, użyj kont użytkowników w Panel sterowania.
Użyj parametru Credential we wszystkich poleceniach zdalnych.
Jest to wymagane nawet w przypadku przesyłania poświadczeń bieżącego użytkownika.
Jak dodać komputer do listy zaufanych hostów
Element TrustedHosts może zawierać rozdzielaną przecinkami listę nazw komputerów, adresów IP i w pełni kwalifikowanych nazw domen. Dozwolone są symbole wieloznaczne.
Aby wyświetlić lub zmienić listę zaufanych hostów, użyj dysku WSMan: . Element TrustedHost znajduje się w węźle WSMan:\localhost\Client
.
Tylko członkowie grupy Administratorzy na komputerze mają uprawnienia do zmiany listy zaufanych hostów na komputerze.
Uwaga: wartość ustawiona dla elementu TrustedHosts wpływa na wszystkich użytkowników komputera.
Aby wyświetlić listę zaufanych hostów, użyj następującego polecenia:
Get-Item wsman:\localhost\Client\TrustedHosts
Możesz również użyć Set-Location
polecenia cmdlet (alias = cd), aby nawigować po dysku WSMan: do lokalizacji. Przykład:
cd WSMan:\localhost\Client; dir
Aby dodać wszystkie komputery do listy zaufanych hostów, użyj następującego polecenia, które umieszcza wartość * (wszystkie) w nazwa_komputera
Set-Item wsman:localhost\client\trustedhosts -Value *
Możesz również użyć symbolu wieloznakowego (*
), aby dodać wszystkie komputery w określonej domenie do listy zaufanych hostów. Na przykład następujące polecenie dodaje wszystkie komputery w domenie Fabrikam do listy zaufanych hostów.
Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com
Aby dodać nazwy określonych komputerów do listy zaufanych hostów, użyj następującego formatu polecenia:
Set-Item wsman:\localhost\Client\TrustedHosts -Value <ComputerName>
gdzie każda wartość <ComputerName>
musi mieć następujący format:
<Computer>.<Domain>.<Company>.<top-level-domain>
Przykład:
$server = 'Server01.Domain01.Fabrikam.com'
Set-Item wsman:\localhost\Client\TrustedHosts -Value $server
Aby dodać nazwę komputera do istniejącej listy zaufanych hostów, najpierw zapisz bieżącą wartość w zmiennej, a następnie ustaw wartość na listę rozdzielaną przecinkami, która zawiera bieżące i nowe wartości.
Aby na przykład dodać komputer Server01 do istniejącej listy zaufanych hostów, użyj następującego polecenia
$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).value
Set-Item wsman:\localhost\Client\TrustedHosts -Value `
"$curValue, Server01.Domain01.Fabrikam.com"
Aby dodać adresy IP określonych komputerów do listy zaufanych hostów, użyj następującego formatu polecenia:
Set-Item wsman:\localhost\Client\TrustedHosts -Value <IP Address>
Przykład:
Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0
Aby dodać komputer do listy TrustedHosts komputera zdalnego, użyj Connect-WSMan
polecenia cmdlet , aby dodać węzeł komputera zdalnego do dysku WSMan: na komputerze lokalnym. Następnie użyj Set-Item
polecenia , aby dodać komputer.
Aby uzyskać więcej informacji na temat Connect-WSMan
polecenia cmdlet, zobacz Connect-WSMan.
Rozwiązywanie problemów z konfiguracją komputera
W tej sekcji omówiono problemy z komunikacjią zdalną, które są związane z konkretnymi konfiguracjami komputera, domeny lub przedsiębiorstwa.
Jak skonfigurować komunikacja zdalna na alternatywnych portach
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.
Komunikacja zdalna programu PowerShell domyślnie używa portu 80 do transportu HTTP. Port domyślny jest używany za każdym razem, gdy użytkownik nie określa parametrów ConnectionURI lub Port w zdalnym poleceniu.
Aby zmienić domyślny port używany przez program PowerShell, użyj Set-Item
polecenia cmdlet w programie WSMan: dysk, aby zmienić wartość Port w węźle liścia odbiornika.
Na przykład następujące polecenie zmienia port domyślny na 8080.
Set-Item wsman:\localhost\listener\listener*\port -Value 8080
Jak skonfigurować komunikacja zdalną za pomocą serwera proxy
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.
Ponieważ komunikacja zdalna programu PowerShell używa protokołu HTTP, ma to wpływ na ustawienia serwera proxy HTTP. W przedsiębiorstwach z serwerami proxy użytkownicy nie mogą bezpośrednio uzyskać dostępu do komputera zdalnego programu PowerShell.
Aby rozwiązać ten problem, użyj opcji ustawienia serwera proxy w zdalnym poleceniu. Dostępne są następujące ustawienia:
- ProxyAccessType
- ProxyAuthentication
- ProxyCredential
Aby ustawić te opcje dla określonego polecenia, użyj następującej procedury:
Użyj parametrów
New-PSSessionOption
proxyAccessType, ProxyAuthentication i ProxyCredential polecenia cmdlet, aby utworzyć obiekt opcji sesji z ustawieniami serwera proxy dla przedsiębiorstwa. Zapisz obiekt opcji jest zmienną.Użyj zmiennej zawierającej obiekt opcji jako wartość parametru
New-PSSession
SessionOption polecenia ,Enter-PSSession
lubInvoke-Command
.
Na przykład następujące polecenie tworzy obiekt opcji sesji z opcjami sesji serwera proxy, a następnie używa obiektu do utworzenia sesji zdalnej.
$SessionOption = New-PSSessionOption -ProxyAccessType IEConfig `
-ProxyAuthentication Negotiate -ProxyCredential Domain01\User01
New-PSSession -ConnectionURI https://www.fabrikam.com
Aby uzyskać więcej informacji na temat New-PSSessionOption
polecenia cmdlet, zobacz New-PSSessionOption.
Aby ustawić te opcje dla wszystkich poleceń zdalnych w bieżącej sesji, użyj obiektu opcji, który New-PSSessionOption
tworzy wartość zmiennej $PSSessionOption
preferencji. Aby uzyskać więcej informacji, zobacz about_Preference_Variables.
Aby ustawić te opcje dla wszystkich poleceń zdalnych wszystkich sesji programu PowerShell na komputerze lokalnym, dodaj zmienną $PSSessionOption
preferencji do profilu programu PowerShell. Aby uzyskać więcej informacji na temat profilów programu PowerShell, zobacz about_Profiles.
Jak wykryć sesję 32-bitową na komputerze 64-bitowym
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.
Jeśli na komputerze zdalnym jest uruchomiona 64-bitowa wersja systemu Windows, a zdalne polecenie używa konfiguracji sesji 32-bitowej, takiej jak Microsoft.PowerShell32, Windows Remote Management (WinRM) ładuje proces WOW64, a system Windows automatycznie przekierowuje wszystkie odwołania do katalogu do $env:Windir\System32
$env:Windir\SysWOW64
katalogu.
W związku z tym, jeśli spróbujesz użyć narzędzi w katalogu System32, które nie mają odpowiedników w katalogu SysWow64, takich jak Defrag.exe
, nie można odnaleźć narzędzi w katalogu .
Aby znaleźć architekturę procesora używaną w sesji, użyj wartości zmiennej środowiskowej PROCESSOR_ARCHITECTURE. Następujące polecenie znajduje architekturę procesora sesji w zmiennej $s
.
$s = New-PSSession -ComputerName Server01 -ConfigurationName CustomShell
Invoke-Command -Session $s {$env:PROCESSOR_ARCHITECTURE}
x86
Aby uzyskać więcej informacji na temat konfiguracji sesji, zobacz Informacje o konfiguracjach sesji.
Rozwiązywanie problemów z zasadami i preferencjami
W tej sekcji omówiono problemy dotyczące komunikacji zdalnej, które są związane z zasadami i preferencjami ustawionymi na komputerach lokalnych i zdalnych.
Jak zmienić zasady wykonywania dla Import-PSSession i Import-Module
ERROR: Import-Module: File <filename> cannot be loaded because the
execution of scripts is disabled on this system.
Polecenia Import-PSSession
cmdlet i Export-PSSession
tworzą moduły zawierające niepodpisane pliki skryptów i pliki formatowania.
Aby zaimportować moduły utworzone przez te polecenia cmdlet, przy użyciu lub Import-PSSession
Import-Module
, zasady wykonywania w bieżącej sesji nie mogą być ograniczone lub AllSigned. Aby uzyskać informacje o zasadach wykonywania programu PowerShell, zobacz about_Execution_Policies.
Aby zaimportować moduły bez zmiany zasad wykonywania dla komputera lokalnego ustawionego w rejestrze, użyj parametru Set-ExecutionPolicy
Zakres, aby ustawić mniej restrykcyjne zasady wykonywania dla pojedynczego procesu.
Na przykład następujące polecenie uruchamia proces z zasadami RemoteSigned
wykonywania. Zmiana zasad wykonywania wpływa tylko na bieżący proces i nie zmienia ustawienia rejestru ExecutionPolicy programu PowerShell.
Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned
Można również użyć parametru ExecutionPolicy polecenia , PowerShell.exe
aby uruchomić pojedynczą sesję z mniej restrykcyjnymi zasadami wykonywania.
PowerShell.exe -ExecutionPolicy RemoteSigned
Aby uzyskać więcej informacji na temat zasad wykonywania, zobacz about_Execution_Policies. Aby uzyskać więcej informacji, wpisz polecenie PowerShell.exe -?
.
Jak ustawić i zmienić limity przydziału
ERROR: The total data received from the remote client exceeded allowed
maximum.
Przydziały umożliwiają ochronę komputera lokalnego i komputera zdalnego przed nadmiernym użyciem zasobów, zarówno przypadkowym, jak i złośliwym.
Następujące przydziały są dostępne w podstawowej konfiguracji.
Dostawca WSMan (WSMan:) Udostępnia kilka ustawień limitu przydziału, takich jak ustawienia MaxEnvelopeSizeKB i MaxProviderRequests w węźle
WSMan:<ComputerName>
oraz Ustawienia MaxConcurrentOperationsPerUser i MaxConnections w węźleWSMan:<ComputerName>\Service
.Komputer lokalny można chronić przy użyciu parametrów
New-PSSessionOption
MaximumReceivedDataSizePerCommand i MaximumReceivedObjectSize polecenia cmdlet i zmiennej$PSSessionOption
preferencji.Komputer zdalny można chronić, dodając ograniczenia do konfiguracji sesji, na przykład za pomocą parametrów
Register-PSSessionConfiguration
MaximumReceivedDataSizePerCommandMB i MaximumReceivedObjectSizeMB polecenia cmdlet.
Gdy limity przydziału powodują konflikt z poleceniem, program PowerShell generuje błąd.
Aby rozwiązać ten problem, zmień polecenie zdalne, aby było zgodne z limitem przydziału. Możesz też określić źródło limitu przydziału, a następnie zwiększyć limit przydziału, aby umożliwić ukończenie polecenia.
Na przykład następujące polecenie zwiększa limit przydziału rozmiaru obiektu w konfiguracji sesji Microsoft.PowerShell na komputerze zdalnym z 10 MB (wartość domyślna) do 11 MB.
Set-PSSessionConfiguration -Name microsoft.PowerShell `
-MaximumReceivedObjectSizeMB 11 -Force
Aby uzyskać więcej informacji na temat New-PSSessionOption
polecenia cmdlet, zobacz New-PSSessionOption
.
Aby uzyskać więcej informacji na temat limitów przydziału WS-Management, zobacz about_WSMan_Provider.
Jak usunąć błędy przekroczenia limitu czasu
ERROR: The WS-Management service cannot complete the operation within
the time specified in OperationTimeout.
Możesz użyć limitów czasu, aby chronić komputer lokalny i komputer zdalny przed nadmiernym użyciem zasobów, zarówno przypadkowym, jak i złośliwym. Po ustawieniu limitów czasu na komputerze lokalnym i zdalnym program PowerShell używa najkrótszych ustawień limitu czasu.
Następujące limity czasu są dostępne w podstawowej konfiguracji.
Dostawca WSMan (WSMan:) Udostępnia kilka ustawień limitu czasu po stronie klienta i po stronie usługi, takich jak ustawienie MaxTimeoutms w węźle
WSMan:<ComputerName>
oraz ustawienia EnumerationTimeoutms i MaxPacketRetrievalTimeSeconds w węźleWSMan:<ComputerName>\Service
.Komputer lokalny można chronić przy użyciu parametrów
New-PSSessionOption
CancelTimeout, IdleTimeout, OpenTimeout i OperationTimeout polecenia cmdlet oraz zmiennej$PSSessionOption
preferencji.Można również chronić komputer zdalny, ustawiając wartości limitu czasu programowo w konfiguracji sesji dla sesji.
Gdy wartość limitu czasu nie zezwala na ukończenie operacji, program PowerShell kończy operację i generuje błąd.
Aby rozwiązać ten problem, zmień polecenie, aby zostało ukończone w interwale limitu czasu lub określić źródło limitu czasu i zwiększyć interwał limitu czasu, aby umożliwić ukończenie polecenia.
Na przykład następujące polecenia używają New-PSSessionOption
polecenia cmdlet do utworzenia obiektu opcji sesji z wartością OperationTimeout 4 minut (w MS), a następnie użyj obiektu opcji sesji, aby utworzyć sesję zdalną.
$pso = New-PSSessionoption -OperationTimeout 240000
New-PSSession -ComputerName Server01 -sessionOption $pso
Aby uzyskać więcej informacji na temat limitów czasu WS-Management, zobacz temat Pomoc dla dostawcy WSMan (typ Get-Help WSMan
).
Aby uzyskać więcej informacji na temat New-PSSessionOption
polecenia cmdlet, zobacz New-PSSessionOption.
Rozwiązywanie problemów z zachowaniem nieodpowiadania
W tej sekcji omówiono problemy z komunikacji zdalnej, które uniemożliwiają ukończenie polecenia i uniemożliwiają lub opóźniają powrót wiersza polecenia programu PowerShell.
Jak przerwać polecenie
Niektóre natywne programy systemu Windows, takie jak programy z interfejsem użytkownika, aplikacje konsolowe, które monitują o dane wejściowe i aplikacje konsolowe korzystające z interfejsu API konsoli Win32, nie działają poprawnie na hoście zdalnym programu PowerShell.
W przypadku korzystania z tych programów może zostać wyświetlone nieoczekiwane zachowanie, takie jak brak danych wyjściowych, częściowe dane wyjściowe lub zdalne polecenie, które nie zostało ukończone.
Aby zakończyć nieodpowiedzialne program, wpisz CTRL+C. Aby wyświetlić wszelkie błędy, które mogły zostać zgłoszone, wpisz $error
hosta lokalnego i sesję zdalną.
Jak odzyskać odzyskiwanie po niepowodzeniu operacji
ERROR: The I/O operation has been aborted because of either a thread exit
or an application request.
Ten błąd jest zwracany po zakończeniu operacji. Zazwyczaj występuje, gdy usługa WinRM zatrzymuje się lub uruchamia ponownie, podczas gdy inne operacje usługi WinRM są w toku.
Aby rozwiązać ten problem, sprawdź, czy usługa WinRM jest uruchomiona i spróbuj ponownie wykonać polecenie.
Uruchom program PowerShell z opcją Uruchom jako administrator .
Uruchom następujące polecenie:
Start-Service WinRM
Uruchom ponownie polecenie, które wygenerowało błąd.
Ograniczenia systemu Linux i macOS
Authentication
Tylko podstawowe uwierzytelnianie działa w systemie macOS i próba użycia innych schematów uwierzytelniania może spowodować awarię procesu.
Zapoznaj się z instrukcjami dotyczącymi uwierzytelniania OMI .