Udostępnij za pośrednictwem


about_Remote_Troubleshooting

Krótki opis

Opisuje sposób rozwiązywania problemów z operacjami zdalnymi w programie PowerShell.

Długi opis

Przed użyciem komunikacji zdalnej programu PowerShell zobacz about_Remote i about_Remote_Requirements , aby uzyskać wskazówki dotyczące konfiguracji i podstawowego użycia.

Musisz mieć uprawnienia administracyjne do wyświetlania lub zmieniania ustawień komputera lokalnego na WSMan: dysku. Obejmuje to zmiany konfiguracji sesji, zaufanych hostów, portów lub odbiorników.

Musisz uruchomić program PowerShell z opcją Uruchom jako administrator .

Jak uruchomić jako administrator

W przypadku błędu:

BŁĄD: Odmowa dostępu. To polecenie cmdlet należy uruchomić z procesu z podwyższonym poziomem uprawnień.

Aby rozpocząć Windows PowerShell za pomocą opcji Uruchom jako administrator, kliknij prawym przyciskiem myszy ikonę programu PowerShell w menu Start i wybierz polecenie Uruchom jako administrator.

Jak włączyć komunikacja zdalna

W przypadku błędów:

  • BŁĄD: ODMOWA DOSTĘPU
  • BŁĄD: Połączenie z hostem zdalnym zostało odrzucone. Sprawdź, czy usługa WS-Management jest uruchomiona na hoście zdalnym i skonfigurowana do nasłuchiwania żądań na prawidłowym porcie i adresie URL PROTOKOŁU HTTP.

Aby odbierać polecenia zdalne, na komputerze musi być włączona komunikacja zdalna programu PowerShell. Windows PowerShell komunikacja zdalna jest domyślnie włączona w Windows Server 2012 i nowszych wersjach systemu Windows Server. Możesz uruchomić polecenie Enable-PSRemoting , aby ponownie włączyć komunikacja zdalną, jeśli została wyłączona. Aby uzyskać więcej informacji, zobacz Enable-PSRemoting.

Jak włączyć komunikacja zdalna w przedsiębiorstwie

W przypadku błędów:

  • BŁĄD: ODMOWA DOSTĘPU
  • BŁĄD: Połączenie z hostem zdalnym zostało odrzucone. Sprawdź, czy usługa WS-Management jest uruchomiona na hoście zdalnym i skonfigurowana do nasłuchiwania żądań na prawidłowym porcie i adresie URL PROTOKOŁU HTTP.

Aby umożliwić pojedynczemu komputerowi odbieranie zdalnych poleceń programu PowerShell i akceptowanie Enable-PSRemoting połączeń, użyj polecenia cmdlet .

Aby włączyć komunikacja zdalną dla wielu komputerów w przedsiębiorstwie, możesz użyć następujących opcji skalowanych.

  • Włącz opcję Zezwalaj na automatyczną konfigurację zasad grupy odbiorników , aby skonfigurować odbiorniki na potrzeby komunikacji wirtualnej.
  • Skonfiguruj i włącz zaporę systemu Windows: zezwalaj na zasady grupy Wyjątki portów lokalnych .
  • Ustaw typ uruchamiania usługi WinRM na Automatic i uruchom usługę.

Jak włączyć odbiorniki przy użyciu zasad grupy

W przypadku błędów:

  • BŁĄD: ODMOWA DOSTĘPU
  • BŁĄD: Połączenie z hostem zdalnym zostało odrzucone. Sprawdź, czy usługa WS-Management jest uruchomiona na hoście zdalnym i skonfigurowana do nasłuchiwania żądań na prawidłowym porcie i adresie URL PROTOKOŁU HTTP.

Włącz zasady Zezwalaj na automatyczną konfigurację odbiorników , aby skonfigurować odbiorniki dla wszystkich komputerów w domenie.

Zasady znajdują się 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. Symbole wieloznaczne (*) są dozwolone.

Jak włączyć komunikacja zdalna w sieciach publicznych

Enable-PSRemoting Zwraca ten błąd, gdy sieć lokalna jest publiczna, a parametr SkipNetworkProfileCheck nie jest używany w poleceniu .

BŁĄD: Nie można sprawdzić stanu zapory

W przypadku wersji serwera systemu Windows Enable-PSRemoting powodzenie na wszystkich profilach sieciowych. Tworzy reguły zapory, które zezwalają na dostęp zdalny do sieci prywatnych i domen ("Strona główna" i "Praca"). W przypadku sieci publicznych tworzy reguły zapory, które umożliwiają dostęp zdalny z tej samej podsieci lokalnej.

W wersjach klienckich systemu Windows Enable-PSRemoting powodzenie w sieciach prywatnych i domenowych. Domyślnie kończy się to niepowodzeniem w sieciach publicznych, ale jeśli używasz parametru SkipNetworkProfileCheck , Enable-PSRemoting powiedzie się i utworzy regułę zapory, która zezwala na ruch z tej samej podsieci lokalnej.

Uwaga

W Windows PowerShell 2.0 na komputerach z systemem Windows Enable-PSRemoting są tworzone reguły zapory, które zezwalają na dostęp zdalny w sieciach prywatnych, domenowych i publicznych. Na komputerach z uruchomionymi wersjami klienta systemu Windows Enable-PSRemoting tworzy reguły zapory, które zezwalają na dostęp zdalny tylko w sieciach prywatnych i domenowych.

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 Get-NetFirewallRule polecenia , 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.

Jak włączyć wyjątek zapory przy użyciu zasad grupy

W przypadku błędów:

  • BŁĄD: ODMOWA DOSTĘPU
  • BŁĄD: Połączenie z hostem zdalnym zostało odrzucone. Sprawdź, czy usługa WS-Management jest uruchomiona na hoście zdalnym i skonfigurowana do nasłuchiwania żądań na prawidłowym porcie i adresie URL PROTOKOŁU HTTP.

Użyj zapory systemu Windows: zezwalaj na zasady wyjątków portów lokalnych , aby włączyć wyjątek zapory dla wszystkich komputerów w domenie.

Zasady znajdują się 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 utworzenie wyjątku zapory dla usługi Windows Remote Management (WinRM).

Jeśli konfiguracja zasad jest niepoprawna, może wystąpić następujący błąd:

Klient nie może nawiązać połączenia z miejscem docelowym określonym w żądaniu. Sprawdź, czy usługa w miejscu docelowym jest uruchomiona i akceptuje żądania.

Błąd konfiguracji w zasadach powoduje pustą wartość właściwości ListeningOn . Użyj następującego polecenia, aby sprawdzić wartość.

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

W przypadku błędu:

BŁĄD: ODMOWA DOSTĘPU

Komunikacja zdalna programu PowerShell zależy od usługi Zdalne zarządzanie systemem Windows (WinRM). Usługa musi być uruchomiona, aby obsługiwać polecenia zdalne.

W wersjach serwera systemu Windows typ uruchamiania usługi WinRM to Automatic. Jednak w wersjach klienckich systemu Windows usługa WinRM jest domyślnie wyłączona.

Użyj poniższego przykładu, aby ustawić typ uruchamiania usługi WinRM na Automatic i uruchomić usługę. Parametr ComputerName akceptuje wiele wartości.

$invokeCimMethodSplat = @{
    ComputerName = 'Server01', 'Server02'
    Query = 'Select * From Win32_Service Where Name = "WinRM"'
    MethodName = 'ChangeStartMode'
    Arguments = @{StartMode  = 'Automatic'}
}
Invoke-CimMethod @invokeCimMethodSplat

Jak utworzyć ponownie konfiguracje sesji domyślnej

W przypadku błędu:

BŁĄD: ODMOWA DOSTĘPU

W przypadku używania programu Enable-PSRemotingprogram tworzy domyślne konfiguracje sesji na komputerze lokalnym. Użytkownicy zdalni używają tych konfiguracji sesji za każdym razem, gdy zdalne polecenie nie zawiera parametru ConfigurationName .

Jeśli domyślne konfiguracje na komputerze są wyrejestrowane lub usunięte, użyj Enable-PSRemoting polecenia cmdlet , aby je ponownie utworzyć. To polecenie 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, możesz usunąć i ponownie utworzyć konfiguracje.

Unregister-PSSessionConfiguration Użyj polecenia cmdlet , aby usunąć zmienione konfiguracje sesji. Służy Enable-PSRemoting do przywracania oryginalnych konfiguracji sesji. Enable-PSRemoting nie zmienia istniejących konfiguracji sesji.

Uwaga

Po Enable-PSRemoting przywróceniu 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 na WSMan: dysku. Aby zmienić deskryptor zabezpieczeń konfiguracji sesji, użyj Set-PSSessionConfiguration polecenia cmdlet z parametrami SecurityDescriptorSDDL lub ShowSecurityDescriptorUI .

Aby uzyskać więcej informacji na temat WSMan: dysku, zobacz about_WSMan_Provider.

Jak podać poświadczenia administratora

W przypadku błędu:

BŁĄD: ODMOWA DOSTĘPU

Musisz być członkiem grupy Administratorzy nawiązywać połączenie z domyślnymi punktami końcowymi sesji zdalnej. Możesz użyć parametru Credential polecenia New-PSSessionEnter-PSSession cmdlet lub Invoke-Command , aby nawiązać połączenie z zdalnymi punktami końcowymi przy użyciu alternatywnych poświadczeń.

W poniższym przykładzie pokazano, jak podać poświadczenia dla użytkownika administratora.

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

Aby uzyskać więcej informacji na temat parametru Credential, zobacz pomoc dotyczącą polecenia New-PSSession, Enter-PSSession lub Invoke-Command.

Jak włączyć komunikacja zdalna dla użytkowników niebędących administratorami

W przypadku błędu:

BŁĄD: ODMOWA DOSTĘPU

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 nawiązywanie połączenia z komputerem lokalnym, nadaj użytkownikowi uprawnienia Wykonaj do domyślnych konfiguracji sesji na komputerze lokalnym.

Poniższy przykład otwiera arkusz właściwości, który umożliwia zmianę deskryptora zabezpieczeń domyślnej Microsoft.PowerShell konfiguracji sesji 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

W przypadku błędu:

BŁĄD: ODMOWA DOSTĘPU

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żesz użyć wpisu rejestru LocalAccountTokenFilterPolicy , aby zmienić domyślne zachowanie i zezwolić zdalnym użytkownikom należącym do grupy Administratorzy do uruchamiania 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.

Użyj następującego polecenia, aby ustawić wartość rejestru LocalAccountTokenFilterPolicy na 1.

$newItemPropertySplat = @{
  Name = 'LocalAccountTokenFilterPolicy'
  Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
  PropertyType = 'DWord'
  Value = 1
}
New-ItemProperty @newItemPropertySplat

Jak używać adresu IP w zdalnym poleceniu

W przypadku błędu:

BŁĄD: Klient usługi WinRM nie może przetworzyć żądania. Jeśli schemat uwierzytelniania różni się od protokołu Kerberos lub jeśli komputer kliencki nie jest przyłączony do domeny, trzeba użyć transportu HTTPS lub trzeba dodać maszynę docelową do ustawienia konfiguracji TrustedHosts.

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. Po określeniu adresu IP używane jest uwierzytelnianie NTLM.

Aby obsługiwać uwierzytelnianie NTLM, należy spełnić następujące wymagania:

  • 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 wtedy, gdy łączysz się jako bieżący użytkownik.

Jak połączyć się zdalnie z komputera opartego na grupie roboczej

W przypadku błędu

BŁĄD: Klient usługi WinRM nie może przetworzyć żądania. Jeśli schemat uwierzytelniania różni się od protokołu Kerberos lub jeśli komputer kliencki nie jest przyłączony do domeny, trzeba użyć transportu HTTPS lub trzeba dodać maszynę docelową do ustawienia konfiguracji TrustedHosts.

Jeśli komputer lokalny nie znajduje się w domenie, należy spełnić następujące wymagania:

  • Skonfiguruj komputer na potrzeby transportu HTTPS lub dodaj adresy IP 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.
  • Użyj parametru Credential we wszystkich poleceniach zdalnych. Jest to wymagane nawet wtedy, gdy łączysz się jako bieżący użytkownik.

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 WSMan: dysku. 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.

Przestroga

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

W poniższym przykładzie użyto symbolu wieloznakowego (*), aby dodać wszystkie komputery do listy zaufanych hostów.

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.

Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com

W poniższym przykładzie ustawiono listę zaufanych hostów na jeden komputer.

$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. Następnie ustaw wartość na ciąg zawierający listę rozdzielaną przecinkami, która zawiera bieżące i nowe wartości.

W poniższym przykładzie dodano serwer Server01 do istniejącej listy zaufanych hostów.

$newServer = 'Server01.Domain01.Fabrikam.com'
$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).Value
Set-Item wsman:\localhost\Client\TrustedHosts -Value "$curValue, $newServer"

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>

Na przykład:

Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0

Aby dodać komputer do listy TrustedHosts komputera zdalnego, użyj polecenia Connect-WSMan , aby nawiązać WSMan: połączenie z komputerem zdalnym przy użyciu polecenia Set-Item , aby dodać komputer.

Aby uzyskać więcej informacji, zobacz pomoc dotyczącą narzędzia Connect-WSMan.

Jak skonfigurować komunikacja zdalna na alternatywnych portach

W przypadku błędu:

BŁĄD: Połączenie z określonym hostem zdalnym zostało odrzucone. Sprawdź, czy usługa WS-Management jest uruchomiona na hoście zdalnym i skonfigurowana do nasłuchiwania żądań na prawidłowym porcie i adresie URL PROTOKOŁU HTTP.

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.

Użyj Set-Item polecenia cmdlet, 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

W przypadku błędu:

BŁĄD: Klient nie może nawiązać połączenia z miejscem docelowym określonym w żądaniu. Sprawdź, czy usługa w miejscu docelowym jest uruchomiona i akceptuje żądania.

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.

  • Użyj parametrów New-PSSessionOptionproxyAccessType, ProxyAuthentication i ProxyCredential polecenia cmdlet, aby utworzyć zmienną zawierającą obiekt PSSessionOption z ustawieniami serwera proxy dla przedsiębiorstwa.
  • Użyj zmiennej zawierającej obiekt PSSessionOption w parametrze SessionOption polecenia New-PSSession, Enter-PSSessionlub Invoke-Command .
$newPSSessionOptionSplat = @{
    ProxyAccessType = 'IEConfig'
    ProxyAuthentication = 'Negotiate'
    ProxyCredential = 'Domain01\User01'
}
$SessionOption = New-PSSessionOption @newPSSessionOptionSplat

$newPSSessionSplat = @{
    ConnectionUri = 'https://www.fabrikam.com'
    SessionOption = $SessionOption
}
New-PSSession @newPSSessionSplat

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, ustaw zmienną $PSSessionOption preferencji na utworzony obiekt PSSessionOption . Aby uzyskać więcej informacji, zobacz about_Preference_Variables.

Aby ustawić te opcje dla wszystkich poleceń zdalnych we wszystkich sesjach 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

W przypadku błędu:

BŁĄD: Termin <nazwa-narzędzia nie jest rozpoznawany jako nazwa> polecenia cmdlet, funkcji, pliku skryptu lub programu możliwego do obsługi. Sprawdź pisownię nazwy lub jeśli została dołączona ścieżka, sprawdź, czy ścieżka jest poprawna i spróbuj ponownie.

Jeśli na komputerze zdalnym jest uruchomiona 64-bitowa wersja systemu Windows, a zdalne polecenie używa konfiguracji 32-bitowej sesji, takiej jak Microsoft.PowerShell32, usługa WinRM ładuje proces WOW64. System Windows automatycznie przekierowuje wszystkie odwołania do $env:Windir\System32$env:Windir\SysWOW64 katalogu.

W związku z tym nie można odnaleźć narzędzi działających w System32 katalogu, które nie mają odpowiedników w SysWow64 katalogu.

Aby znaleźć architekturę procesora używaną w sesji, użyj wartości zmiennej środowiskowej PROCESSOR_ARCHITECTURE.

$s = New-PSSession -ComputerName Server01 -ConfigurationName CustomShell
Invoke-Command -Session $s {$env:PROCESSOR_ARCHITECTURE}
x86

Aby uzyskać więcej informacji, zobacz about_Session_Configurations.

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

W przypadku błędu:

BŁĄD: Import-Module: Nie można załadować nazwy pliku<>, ponieważ wykonywanie skryptów jest wyłączone w tym systemie.

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, zasady wykonywania w bieżącej sesji nie mogą mieć wartości Restricted lub AllSigned. Aby uzyskać więcej informacji, zobacz about_Execution_Policies.

Aby zaimportować moduły bez zmiany zasad wykonywania dla komputera lokalnego, użyj parametru Set-ExecutionPolicyZakres , aby ustawić mniej restrykcyjne zasady wykonywania dla jednego procesu.

Na przykład poniższy przykład ustawia zasady wykonywania dla RemoteSigned bieżącego procesu. Zmiana ma wpływ tylko na bieżący proces.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

Można również użyć parametru ExecutionPolicy polecenia PowerShell.exe , aby uruchomić jedną sesję z mniej restrykcyjnymi zasadami wykonywania.

pwsh.exe -ExecutionPolicy RemoteSigned

Jak ustawić i zmienić limity przydziału

Przy użyciu przydziałów można chronić komputer lokalny i komputer zdalny przed nadmiernym użyciem zasobów, zarówno przypadkowym, jak i złośliwym. Gdy limity przydziału powodują konflikt z poleceniem, program PowerShell generuje następujący błąd.

BŁĄD: Łączna liczba danych otrzymanych od klienta zdalnego przekroczyła dozwoloną wartość maksymalną.

Dostawca WSMan ma następujące ustawienia limitu przydziału:

  • Ustawienia MaxEnvelopeSizeKB i MaxProviderRequests w węźle WSMan:<ComputerName> oraz ustawienia MaxConcurrentOperations, MaxConcurrentOperationsPerUser i MaxConnections w węźle WSMan:<ComputerName>\Service .
  • Aby chronić komputer lokalny, można użyć parametrów New-PSSessionOptionMaximumReceivedDataSizePerCommand i MaximumReceivedObjectSize polecenia cmdlet i $PSSessionOption zmiennej preferencji.
  • Aby chronić komputer zdalny, dodaj ograniczenia do konfiguracji sesji przy użyciu parametrów Register-PSSessionConfigurationMaximumReceivedDataSizePerCommandMB i MaximumReceivedObjectSizeMB polecenia cmdlet.

Aby rozwiązać ten problem, zmień zdalne polecenie, aby było zgodne z limitem przydziału lub 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.

$setPSSessionConfigurationSplat = @{
    Name = 'Microsoft.PowerShell'
    MaximumReceivedObjectSizeMB = 11
    Force = $true
}
Set-PSSessionConfiguration @setPSSessionConfigurationSplat

Aby uzyskać więcej informacji na temat przydziałów WS-Management, zobacz about_WSMan_Provider.

Jak usunąć błędy przekroczenia limitu czasu

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. Gdy limity czasu są ustawiane zarówno na komputerze lokalnym, jak i zdalnym, program PowerShell używa najkrótszych ustawień limitu czasu.

Jeśli wartość limitu czasu nie zezwala na ukończenie operacji, program PowerShell kończy operację i generuje następujący błąd.

BŁĄD: Usługa WS-Management nie może ukończyć operacji w czasie określonym w parametrze OperationTimeout.

Dostawca WSMan ma następujące ustawienia limitu czasu.

  • 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-PSSessionOptionCancelTimeout, IdleTimeout, OpenTimeout i OperationTimeout polecenia cmdlet oraz zmiennej $PSSessionOption preferencji.
  • Komputer zdalny można również chronić, ustawiając wartości limitu czasu programowo w konfiguracji sesji dla sesji.

Aby rozwiązać ten problem, zmień polecenie tak, aby zostało ukończone w interwale limitu czasu lub zwiększ interwał limitu czasu, aby umożliwić ukończenie polecenia.

Poniższy przykład tworzy opcję sesji z wartością OperationTimeout 4 minut (w MS), a następnie używa opcji sesji do utworzenia sesji zdalnej.

$pso = New-PSSessionOption -OperationTimeout 240000
New-PSSession -ComputerName Server01 -SessionOption $pso

Aby uzyskać więcej informacji na temat limitów czasu WS-Management, zobacz about_WSMan_Provider.

Jak przerwać polecenie, które nie odpowiada

Niektóre programy natywne, 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 wystąpić 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ć program, który nie odpowiada, naciśnij klawisze Ctrl+c. Użyj Get-Error polecenia na hoście lokalnym i sesji zdalnej, aby wyświetlić wszelkie błędy, które mogły zostać zgłoszone.

Jak odzyskać sprawność po niepowodzeniu operacji

Następujący błąd jest zwracany po zakończeniu operacji.

BŁĄD: Operacja we/wy została przerwana z powodu zakończenia wątku lub żądania aplikacji.

Zazwyczaj dzieje się tak, 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 dotyczące systemów Linux i macOS

Komunikacja zdalna programu PowerShell to system Linux i macOS korzystający z komunikacji zdalnej za pośrednictwem protokołu SSH. Aby uzyskać więcej informacji, zobacz Komunikacja zdalna programu PowerShell za pośrednictwem protokołu SSH.

Zobacz też