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-PSRemoting
program 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-PSSession
Enter-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-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. 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-PSSession
SessionOption polecenia ,Enter-PSSession
lubInvoke-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ęź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. - 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.
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
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.