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 poziomu procesu z podwyższonym poziomem uprawnień.

Aby uruchomić program Windows PowerShell z opcją Uruchom jako administrator , kliknij prawym przyciskiem myszy ikonę programu PowerShell w menu Start i wybierz polecenie Uruchom jako administrator.

Jak włączyć zdalną obsługę zdalną

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 poprawnym porcie i adresie URL PROTOKOŁU HTTP.

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

Jak włączyć komunikacja zdalną 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 poprawnym porcie i adresie URL PROTOKOŁU HTTP.

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żesz użyć następujących opcji skalowanych.

  • Włącz zasady grupy Zezwalaj na automatyczną konfigurację 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 poprawnym 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 zasad 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 zdalną 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 we wszystkich profilach sieciowych. Tworzy reguły zapory, które zezwalają na zdalny dostęp 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 przypadku wersji 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 , powiedzie się i utworzy regułę zapory zezwalającą Enable-PSRemoting na ruch z tej samej podsieci lokalnej.

Uwaga

W programie Windows PowerShell 2.0 na komputerach z uruchomionymi wersjami serwera systemu Windows tworzone są reguły zapory zezwalające Enable-PSRemoting 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.

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. Służy Get-NetFirewallRule do wyświetlania listy 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 poprawnym 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 zasad 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 zostać wyświetlony następujący błąd:

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

Błąd konfiguracji w zasadach powoduje, że dla właściwości ListeningOn jest pusta wartość. 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). Aby obsługiwać polecenia zdalne, usługa musi być uruchomiona.

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 ponownie utworzyć konfiguracje sesji domyślnej

W przypadku błędu:

BŁĄD: ODMOWA DOSTĘPU

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

Jeśli domyślne konfiguracje na komputerze są wyrejestrowane lub usuwane, 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 konfiguracje sesji domyślnej 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. Użyj polecenia Enable-PSRemoting , aby przywrócić oryginalne konfiguracje sesji. Enable-PSRemoting 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 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 New-PSSessionEnter-PSSession Credential polecenia 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 administracyjnego.

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 zdalną dla użytkowników niebędących użytkownikami administracyjnymi

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ę zdalnie z komputerem.

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 zdalną 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 tylko przy użyciu standardowych tokenów uprawnień użytkownika.

Możesz użyć wpisu rejestru LocalAccountTokenFilterPolicy , aby zmienić domyślne zachowanie i zezwolić użytkownikom zdalnym, którzy są członkami grupy Administratorzy do uruchamiania z uprawnieniami administratora.

Uwaga

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 poleceniu zdalnym

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-PSSession ComputerName polecenia cmdlet i Invoke-Command akceptuje adres IP jako prawidłową wartość. Jednak ponieważ uwierzytelnianie Kerberos nie obsługuje adresów IP. Podczas określania adresu IP używane jest uwierzytelnianie NTLM.

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

  • Skonfiguruj komputer pod kątem 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 grupach roboczych

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 pod kątem 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 grupach roboczych. 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.

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

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żna 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 WSMan: połączyć się 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 zdalną 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 poprawnym 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śli parametrów ConnectionURI lub Port w poleceniu zdalnym.

Użyj Set-Item polecenia cmdlet, aby zmienić wartość Port w węźle liścia odbiornika.

Na przykład następujące polecenie zmienia domyślny port 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 lokalizacją docelową określoną 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, które mają serwery proxy, użytkownicy nie mogą uzyskać bezpośredniego dostępu do komputera zdalnego programu PowerShell.

Aby rozwiązać ten problem, użyj opcji ustawień serwera proxy w zdalnym poleceniu.

  • Użyj parametrów New-PSSessionOption ProxyAccessType, 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 dowcip parametru New-PSSessionSessionOption polecenia , 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 ścieżka została dołączona, 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 sesji 32-bitowej, 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 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 z komunikacji zdalnej związane z zasadami i preferencjami ustawionymi na komputerach lokalnych i zdalnych.

Jak zmienić zasady wykonywania dla polecenia 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ć Restricted wartości 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 Zakres , Set-ExecutionPolicy aby ustawić mniej restrykcyjne zasady wykonywania dla pojedynczego procesu.

Na przykład w poniższym przykładzie zasady wykonywania są ustawiane RemoteSigned dla bieżącego procesu. Zmiana dotyczy tylko bieżącego procesu.

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 programu WSMan ma następujące ustawienia limitu przydziału:

  • Ustawienia MaxEnvelopeSizeKB i MaxProviderRequests w węźle WSMan:<ComputerName> i maxConcurrentOperations, MaxConcurrentOperationsPerUser i MaxConnections w węźleWSMan:<ComputerName>\Service.
  • Aby chronić komputer lokalny, można użyć parametrów New-PSSessionOption MaximumReceivedDataSizePerCommand i MaximumReceivedObjectSize polecenia cmdlet oraz $PSSessionOption zmiennej preferencji.
  • Aby chronić komputer zdalny, dodaj ograniczenia do konfiguracji sesji przy użyciu parametrów Register-PSSessionConfiguration MaximumReceivedDataSizePerCommandMB 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 usługi 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 operationTimeout.

Dostawca WSMan ma następujące ustawienia limitów czasu.

  • 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-PSSessionOption CancelTimeout, 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 przedziale 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 usługi 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 nieodpowiadczy, wpisz Ctrl+c. Użyj Get-Error hosta lokalnego 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 systemu 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ż