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-PSRemotingprogram 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-PSSessionEnter-PSSessionCredential 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-PSSessionEnter-PSSessionComputerName 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.

  1. Skonfiguruj komputer na potrzeby transportu HTTPS lub dodaj adresy IP komputerów zdalnych do listy TrustedHosts na komputerze lokalnym.

  2. 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.

  1. Skonfiguruj komputer na potrzeby transportu HTTPS lub dodaj nazwy komputerów zdalnych do listy TrustedHosts na komputerze lokalnym.

  2. 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.

  3. 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:

  1. Użyj parametrów New-PSSessionOptionproxyAccessType, ProxyAuthentication i ProxyCredential polecenia cmdlet, aby utworzyć obiekt opcji sesji z ustawieniami serwera proxy dla przedsiębiorstwa. Zapisz obiekt opcji jest zmienną.

  2. Użyj zmiennej zawierającej obiekt opcji jako wartość parametru New-PSSessionSessionOption polecenia , Enter-PSSessionlub Invoke-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-PSSessionImport-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-ExecutionPolicyZakres, 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-PSSessionOptionMaximumReceivedDataSizePerCommand 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-PSSessionConfigurationMaximumReceivedDataSizePerCommandMB 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ęźle WSMan:<ComputerName>\Service .

  • Komputer lokalny można chronić przy użyciu parametrów New-PSSessionOptionCancelTimeout, 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.

  1. Uruchom program PowerShell z opcją Uruchom jako administrator .

  2. Uruchom następujące polecenie:

    Start-Service WinRM

  3. 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 .

Zobacz też