about_Remote_Troubleshooting
Descrizione breve
Descrive come risolvere i problemi relativi alle operazioni remote in PowerShell.
Descrizione lunga
Prima di usare la comunicazione remota di PowerShell, vedere about_Remote e about_Remote_Requirements per indicazioni sulla configurazione e sull'uso di base.
È necessario disporre dei diritti amministrativi per visualizzare o modificare le impostazioni per il computer locale nell'unità WSMan:
. Sono incluse le modifiche apportate alla configurazione di sessione, agli host attendibili, alle porte o ai listener.
È necessario eseguire PowerShell con l'opzione Esegui come amministratore .
Come eseguire come amministratore
Per l'errore:
ERRORE: l'accesso viene negato. È necessario eseguire questo cmdlet da un processo con privilegi elevati.
Per avviare Windows PowerShell con l'opzione Esegui come amministratore, fare clic con il pulsante destro del mouse sull'icona di PowerShell nel menu Start e scegliere Esegui come amministratore.
Come abilitare la comunicazione remota
Per gli errori:
- ERRORE: ACCESSO NEGATO
- ERRORE: la connessione all'host remoto è stata rifiutata. Verificare che il servizio WS-Management sia in esecuzione nell'host remoto e configurato per l'ascolto delle richieste sulla porta corretta e sull'URL HTTP.
Per ricevere comandi remoti, è necessario abilitare la comunicazione remota di PowerShell nel computer. La comunicazione remota di Windows PowerShell è abilitata per impostazione predefinita in Windows Server 2012 e versioni più recenti di Windows Server. È possibile eseguire Enable-PSRemoting
per riabilitare la comunicazione remota se è stata disabilitata. Per altre informazioni, vedere Enable-PSRemoting.
Come abilitare la comunicazione remota in un'organizzazione
Per gli errori:
- ERRORE: ACCESSO NEGATO
- ERRORE: la connessione all'host remoto è stata rifiutata. Verificare che il servizio WS-Management sia in esecuzione nell'host remoto e configurato per l'ascolto delle richieste sulla porta corretta e sull'URL HTTP.
Per consentire a un singolo computer di ricevere comandi di PowerShell remoti e accettare connessioni, usare il Enable-PSRemoting
cmdlet .
Per abilitare la comunicazione remota per più computer in un'organizzazione, è possibile usare le opzioni ridimensionate seguenti.
- Abilitare i criteri di gruppo Consenti la configurazione automatica dei listener per la comunicazione remota.
- Configurare e abilitare i criteri di gruppo Windows Firewall: Consenti eccezioni porte locali.
- Impostare il tipo di avvio del servizio WinRM su
Automatic
e avviare il servizio.
Come abilitare i listener usando criteri di gruppo
Per gli errori:
- ERRORE: ACCESSO NEGATO
- ERRORE: la connessione all'host remoto è stata rifiutata. Verificare che il servizio WS-Management sia in esecuzione nell'host remoto e configurato per l'ascolto delle richieste sulla porta corretta e sull'URL HTTP.
Abilitare il criterio Consenti la configurazione automatica dei listener per configurare i listener per tutti i computer in un dominio.
I criteri sono disponibili nel seguente percorso di Criteri di gruppo:
Computer Configuration\Administrative Templates\Windows Components
\Windows Remote Management (WinRM)\WinRM service
Abilitare il criterio e specificare i filtri IPv4 e IPv6. Sono consentiti caratteri jolly (*
).
Come abilitare la comunicazione remota nelle reti pubbliche
Enable-PSRemoting
restituisce questo errore quando la rete locale è pubblica e il parametro SkipNetworkProfileCheck non viene usato nel comando .
ERRORE: Impossibile controllare lo stato del firewall
Nelle versioni server di Windows, Enable-PSRemoting
ha esito positivo in tutti i profili di rete. Crea regole del firewall che consentono l'accesso remoto alle reti private e di dominio ("Home" e "Work"). Per le reti pubbliche, crea regole del firewall che consentono l'accesso remoto dalla stessa subnet locale.
Nelle versioni client di Windows, Enable-PSRemoting
ha esito positivo nelle reti private e di dominio. Per impostazione predefinita, ha esito negativo nelle reti pubbliche, ma se si usa il parametro SkipNetworkProfileCheck , Enable-PSRemoting
ha esito positivo e crea una regola del firewall che consente il traffico dalla stessa subnet locale.
Nota
In Windows PowerShell 2.0, nei computer che eseguono versioni server di Windows, Enable-PSRemoting
crea regole del firewall che consentono l'accesso remoto su reti private, di dominio e pubbliche. Nei computer che eseguono versioni client di Windows, Enable-PSRemoting
crea regole del firewall che consentono l'accesso remoto solo su reti private e di dominio.
Per rimuovere la restrizione della subnet locale sulle reti pubbliche e consentire l'accesso remoto da qualsiasi posizione, eseguire il comando seguente:
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
Il Set-NetFirewallRule
cmdlet viene esportato dal modulo NetSecurity .
Nota
Il nome della regola del firewall può essere diverso per versioni diverse di Windows. Usare Get-NetFirewallRule
per visualizzare un elenco di regole. Prima di abilitare la regola del firewall, visualizzare le impostazioni di sicurezza nella regola per verificare che la configurazione sia appropriata per l'ambiente in uso.
Come abilitare un'eccezione del firewall usando criteri di gruppo
Per gli errori:
- ERRORE: ACCESSO NEGATO
- ERRORE: la connessione all'host remoto è stata rifiutata. Verificare che il servizio WS-Management sia in esecuzione nell'host remoto e configurato per l'ascolto delle richieste sulla porta corretta e sull'URL HTTP.
Usa il criterio Windows Firewall: consenti eccezioni delle porte locali per abilitare un'eccezione del firewall per in tutti i computer di un dominio.
Il criterio si trova nel percorso di Criteri di gruppo seguente:
Computer Configuration\Administrative Templates\Network
\Network Connections\Windows Firewall\Domain Profile
Questo criterio consente ai membri del gruppo Administrators di creare un'eccezione del firewall per il servizio Gestione remota Windows (WinRM).
Se la configurazione dei criteri non è corretta, è possibile che venga visualizzato l'errore seguente:
Il client non può connettersi alla destinazione specificata nella richiesta. Verificare che il servizio nella destinazione sia in esecuzione e che accetti le richieste.
Un errore di configurazione nei criteri restituisce un valore vuoto per la proprietà ListeningOn . Usare il comando seguente per controllare il valore.
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 : {}
Come impostare il tipo di avvio del servizio WinRM
Per l'errore:
ERRORE: ACCESSO NEGATO
La comunicazione remota di PowerShell dipende dal servizio Gestione remota Windows (WinRM). Il servizio deve essere in esecuzione per supportare i comandi remoti.
Nelle versioni server di Windows il tipo di avvio del servizio WinRM è Automatic
.
Tuttavia, nelle versioni client di Windows, il servizio WinRM è disabilitato per impostazione predefinita.
Usare l'esempio seguente per impostare il tipo di avvio del servizio WinRM su Automatic
e avviare il servizio. Il parametro ComputerName accetta più valori.
$invokeCimMethodSplat = @{
ComputerName = 'Server01', 'Server02'
Query = 'Select * From Win32_Service Where Name = "WinRM"'
MethodName = 'ChangeStartMode'
Arguments = @{StartMode = 'Automatic'}
}
Invoke-CimMethod @invokeCimMethodSplat
Come ricreare le configurazioni di sessione predefinite
Per l'errore:
ERRORE: ACCESSO NEGATO
Quando si usa Enable-PSRemoting
, vengono create configurazioni di sessione predefinite nel computer locale. Gli utenti remoti usano queste configurazioni di sessione ogni volta che un comando remoto non include il parametro ConfigurationName .
Se le configurazioni predefinite in un computer vengono annullate o eliminate, usare il Enable-PSRemoting
cmdlet per ricrearle. È possibile usare ripetutamente questo cmdlet. Non genera errori se una funzionalità è già configurata.
Se si modificano le configurazioni di sessione predefinite e si vogliono ripristinare le configurazioni di sessione originali, è possibile eliminare e ricreare le configurazioni.
Usare il Unregister-PSSessionConfiguration
cmdlet per eliminare le configurazioni di sessione modificate. Usare Enable-PSRemoting
per ripristinare le configurazioni di sessione originali. Enable-PSRemoting
non modifica le configurazioni di sessione esistenti.
Nota
Quando Enable-PSRemoting
ripristina la configurazione di sessione predefinita, non crea descrittori di sicurezza espliciti per le configurazioni. Le configurazioni ereditano invece il descrittore di sicurezza di RootSDDL, protetto per impostazione predefinita.
Per visualizzare il descrittore di sicurezza RootSDDL , digitare:
Get-Item wsman:\localhost\Service\RootSDDL
Per modificare RootSDDL, usare il Set-Item
cmdlet nell'unità WSMan:
. Per modificare il descrittore di sicurezza di una configurazione di sessione, usare il Set-PSSessionConfiguration
cmdlet con i parametri SecurityDescriptorSDDL o ShowSecurityDescriptorUI .
Per altre informazioni sull'unità WSMan:
, vedere about_WSMan_Provider.
Come fornire le credenziali di amministratore
Per l'errore:
ERRORE: ACCESSO NEGATO
È necessario essere membri del gruppo Administrators che si connettono agli endpoint di sessione remota predefiniti. È possibile usare il parametro Credential dei New-PSSession
cmdlet o Enter-PSSession
Invoke-Command
per connettersi agli endpoint remoti usando credenziali alternative.
Nell'esempio seguente viene illustrato come specificare le credenziali per un utente amministratore.
Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01
Per altre informazioni sul parametro Credential, vedere la Guida per New-PSSession, Enter-PSSession o Invoke-Command.
Come abilitare la comunicazione remota per utenti non amministrativi
Per l'errore:
ERRORE: ACCESSO NEGATO
Per impostazione predefinita, solo i membri del gruppo Administrators in un computer dispongono dell'autorizzazione per usare le configurazioni di sessione predefinite. Pertanto, solo i membri del gruppo Administrators possono connettersi al computer in remoto.
Per consentire ad altri utenti di connettersi al computer locale, concedere all'utente le autorizzazioni Esegui per le configurazioni di sessione predefinite nel computer locale.
Nell'esempio seguente viene aperta una finestra delle proprietà che consente di modificare il descrittore di sicurezza della configurazione di sessione predefinita Microsoft.PowerShell
nel computer locale.
Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI
Per altre informazioni, vedere about_Session_Configurations.
Come abilitare la comunicazione remota per gli amministratori in altri domini
Per l'errore:
ERRORE: ACCESSO NEGATO
Quando un utente in un altro dominio è membro del gruppo Administrators nel computer locale, l'utente non può connettersi al computer locale in modalità remota con privilegi di amministratore. Per impostazione predefinita, le connessioni remote di altri domini vengono eseguite solo con token con privilegi utente standard.
È possibile usare la voce del Registro di sistema LocalAccountTokenFilterPolicy per modificare il comportamento predefinito e consentire agli utenti remoti membri del gruppo Administrators di eseguire con privilegi di amministratore.
Attenzione
La voce LocalAccountTokenFilterPolicy disabilita le restrizioni remote del controllo dell'account utente per tutti gli utenti di tutti i computer interessati. Considerare attentamente le implicazioni di questa impostazione prima di modificare i criteri.
Usare il comando seguente per impostare il valore del Registro di sistema LocalAccountTokenFilterPolicy su 1.
$newItemPropertySplat = @{
Name = 'LocalAccountTokenFilterPolicy'
Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
PropertyType = 'DWord'
Value = 1
}
New-ItemProperty @newItemPropertySplat
Come usare un indirizzo IP in un comando remoto
Per l'errore:
ERRORE: il client WinRM non può elaborare la richiesta. Se lo schema di autenticazione è diverso da Kerberos o se il computer client non è aggiunto a un dominio, è necessario usare il trasporto HTTPS o aggiungere il computer di destinazione all'impostazione di configurazione TrustedHosts.
Il parametro ComputerName dei New-PSSession
cmdlet e Enter-PSSession
Invoke-Command
accetta un indirizzo IP come valore valido. Tuttavia, poiché l'autenticazione Kerberos non supporta gli indirizzi IP. Quando si specifica un indirizzo IP, viene usata l'autenticazione NTLM.
Per supportare l'autenticazione NTLM, è necessario soddisfare i requisiti seguenti:
- Configurare il computer per il trasporto HTTPS o aggiungere gli indirizzi IP dei computer remoti all'elenco TrustedHosts nel computer locale.
- Usare il parametro Credential in tutti i comandi remoti. Questa operazione è necessaria anche quando ci si connette come utente corrente.
Come connettersi in remoto da un computer basato su gruppi di lavoro
Per l'errore
ERRORE: il client WinRM non può elaborare la richiesta. Se lo schema di autenticazione è diverso da Kerberos o se il computer client non è aggiunto a un dominio, è necessario usare il trasporto HTTPS o aggiungere il computer di destinazione all'impostazione di configurazione TrustedHosts.
Quando il computer locale non si trova in un dominio, è necessario soddisfare i requisiti seguenti:
- Configurare il computer per il trasporto HTTPS o aggiungere gli indirizzi IP dei computer remoti all'elenco TrustedHosts nel computer locale.
- Verificare che una password sia impostata nel computer basato sul gruppo di lavoro. Se una password non è impostata o il valore della password è vuoto, non è possibile eseguire comandi remoti.
- Usare il parametro Credential in tutti i comandi remoti. Questa operazione è necessaria anche quando ci si connette come utente corrente.
Come aggiungere un computer all'elenco di host attendibili
L'elemento TrustedHosts può contenere un elenco delimitato da virgole di nomi di computer, indirizzi IP e nomi di dominio completi. I caratteri jolly sono consentiti.
Per visualizzare o modificare l'elenco di host attendibili, usare l'unità WSMan:
. L'elemento TrustedHost si trova nel WSMan:\localhost\Client
nodo. Solo i membri del gruppo Administrators nel computer dispongono dell'autorizzazione per modificare l'elenco di host attendibili nel computer.
Attenzione
Il valore impostato per l'elemento TrustedHosts influisce su tutti gli utenti del computer.
Per visualizzare l'elenco di host attendibili, usare il comando seguente:
Get-Item wsman:\localhost\Client\TrustedHosts
Nell'esempio seguente viene utilizzato il carattere jolly (*
) per aggiungere tutti i computer all'elenco di host attendibili.
Set-Item wsman:localhost\client\trustedhosts -Value *
È anche possibile usare un carattere jolly (*
) per aggiungere tutti i computer in un determinato dominio all'elenco di host attendibili. Ad esempio, il comando seguente aggiunge tutti i computer nel dominio Fabrikam.
Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com
Nell'esempio seguente l'elenco di host attendibili viene impostato su un singolo computer.
$server = 'Server01.Domain01.Fabrikam.com'
Set-Item wsman:\localhost\Client\TrustedHosts -Value $server
Per aggiungere un nome computer a un elenco esistente di host attendibili, salvare prima il valore corrente in una variabile. Impostare quindi il valore su una stringa contenente un elenco delimitato da virgole che include i valori correnti e nuovi.
Nell'esempio seguente viene aggiunto Server01 a un elenco esistente di host attendibili.
$newServer = 'Server01.Domain01.Fabrikam.com'
$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).Value
Set-Item wsman:\localhost\Client\TrustedHosts -Value "$curValue, $newServer"
Per aggiungere gli indirizzi IP di determinati computer all'elenco di host attendibili, usare il formato di comando seguente:
Set-Item wsman:\localhost\Client\TrustedHosts -Value <IP Address>
Ad esempio:
Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0
Per aggiungere un computer all'elenco TrustedHosts di un computer remoto, utilizzare Connect-WSMan
per connettersi al WSMan:
computer remoto da utilizzare Set-Item
per aggiungere il computer.
Per altre informazioni, vedere la Guida per Connect-WSMan.
Come configurare la comunicazione remota su porte alternative
Per l'errore:
ERRORE: la connessione all'host remoto specificato è stata rifiutata. Verificare che il servizio WS-Management sia in esecuzione nell'host remoto e configurato per l'ascolto delle richieste sulla porta corretta e sull'URL HTTP.
La comunicazione remota di PowerShell usa la porta 80 per il trasporto HTTP per impostazione predefinita. La porta predefinita viene usata ogni volta che l'utente non specifica i parametri ConnectionURI o Port in un comando remoto.
Usare Set-Item
il cmdlet per modificare il valore porta nel nodo foglia del listener.
Ad esempio, il comando seguente modifica la porta predefinita su 8080.
Set-Item wsman:\localhost\listener\listener*\port -Value 8080
Come configurare la comunicazione remota con un server proxy
Per l'errore:
ERRORE: il client non può connettersi alla destinazione specificata nella richiesta. Verificare che il servizio nella destinazione sia in esecuzione e che accetti le richieste.
Poiché la comunicazione remota di PowerShell usa il protocollo HTTP, è interessata dalle impostazioni del proxy HTTP. Nelle aziende che dispongono di server proxy, gli utenti non possono accedere direttamente a un computer remoto di PowerShell.
Per risolvere questo problema, usare le opzioni di impostazione proxy nel comando remoto.
- Usare i parametri ProxyAccessType, ProxyAuthentication e ProxyCredential del cmdlet per creare una variabile contenente un oggetto PSSessionOption con le impostazioni proxy per l'organizzazione
New-PSSessionOption
. - Usare la variabile contenente l'oggetto PSSessionOption con il parametro SessionOption di un
New-PSSession
comando ,Enter-PSSession
oInvoke-Command
.
$newPSSessionOptionSplat = @{
ProxyAccessType = 'IEConfig'
ProxyAuthentication = 'Negotiate'
ProxyCredential = 'Domain01\User01'
}
$SessionOption = New-PSSessionOption @newPSSessionOptionSplat
$newPSSessionSplat = @{
ConnectionUri = 'https://www.fabrikam.com'
SessionOption = $SessionOption
}
New-PSSession @newPSSessionSplat
Per altre informazioni sul New-PSSessionOption
cmdlet, vedere New-PSSessionOption.
Per impostare queste opzioni per tutti i comandi remoti nella sessione corrente, impostare la $PSSessionOption
variabile di preferenza sull'oggetto PSSessionOption creato. Per altre informazioni, vedere about_Preference_Variables.
Per impostare queste opzioni per tutti i comandi remoti in tutte le sessioni di PowerShell nel computer locale, aggiungere la $PSSessionOption
variabile di preferenza al profilo di PowerShell. Per altre informazioni sui profili di PowerShell, vedere about_Profiles.
Come rilevare una sessione a 32 bit in un computer a 64 bit
Per l'errore:
ERRORE: il termine <tool-name> non viene riconosciuto come nome di un cmdlet, di una funzione, di un file di script o di un programma eseguibile. Verificare l'ortografia del nome, che il percorso sia incluso e corretto, quindi riprovare.
Se il computer remoto esegue una versione a 64 bit di Windows e il comando remoto usa una configurazione di sessione a 32 bit, ad esempio Microsoft.PowerShell32, WinRM carica un processo WOW64. Windows reindirizza automaticamente tutti i riferimenti alla $env:Windir\System32
$env:Windir\SysWOW64
directory.
Di conseguenza, non è possibile trovare gli strumenti in esecuzione nella System32
directory che non dispongono di controparti nella SysWow64
directory.
Per trovare l'architettura del processore usata nella sessione, usare il valore della variabile di ambiente PROCESSOR_ARCHITECTURE .
$s = New-PSSession -ComputerName Server01 -ConfigurationName CustomShell
Invoke-Command -Session $s {$env:PROCESSOR_ARCHITECTURE}
x86
Per altre informazioni, vedere about_Session_Configurations.
Risoluzione dei problemi relativi a criteri e preferenze
Questa sezione illustra i problemi di comunicazione remota correlati a criteri e preferenze impostati nei computer locali e remoti.
Come modificare i criteri di esecuzione per Import-PSSession e Import-Module
Per l'errore:
ERRORE: Import-Module: Impossibile caricare il nome del file <> perché l'esecuzione degli script è disabilitata in questo sistema.
I Import-PSSession
cmdlet e Export-PSSession
creano moduli che contengono file di script non firmati e file di formattazione.
Per importare i moduli creati da questi cmdlet, i criteri di esecuzione nella sessione corrente non possono essere Restricted
o AllSigned
. Per ulteriori informazioni, vedere about_Execution_Policies.
Per importare i moduli senza modificare i criteri di esecuzione per il computer locale, usare il parametro Scope di Set-ExecutionPolicy
per impostare un criterio di esecuzione meno restrittivo per un singolo processo.
Nell'esempio seguente, ad esempio, i criteri RemoteSigned
di esecuzione vengono impostati su per il processo corrente. La modifica influisce solo sul processo corrente.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
È anche possibile usare il parametro ExecutionPolicy di PowerShell.exe
per avviare una singola sessione con criteri di esecuzione meno restrittivi.
pwsh.exe -ExecutionPolicy RemoteSigned
Come impostare e modificare le quote
È possibile usare le quote per proteggere il computer locale e il computer remoto da un uso eccessivo delle risorse, sia accidentale che dannoso. Quando le quote sono in conflitto con un comando, PowerShell genera l'errore seguente.
ERRORE: i dati totali ricevuti dal client remoto hanno superato il limite massimo consentito.
Il provider WSMan ha le impostazioni di quota seguenti:
- Le impostazioni MaxEnvelopeSizeKB e MaxProviderRequests nel
WSMan:<ComputerName>
nodo e le impostazioni MaxConcurrentOperations, MaxConcurrentOperationsPerUser e MaxConnections nelWSMan:<ComputerName>\Service
nodo. - È possibile usare i parametri MaximumReceivedDataSizePerCommand e MaximumReceivedObjectSize del
New-PSSessionOption
cmdlet e la$PSSessionOption
variabile preferenza per proteggere il computer locale. - Per proteggere il computer remoto, aggiungere restrizioni alle configurazioni di sessione usando i parametri MaximumReceivedDataSizePerCommandMB e MaximumReceivedObjectSizeMB del
Register-PSSessionConfiguration
cmdlet.
Per risolvere l'errore, modificare il comando remoto in modo che sia conforme alla quota o aumentare la quota per consentire il completamento del comando.
Ad esempio, il comando seguente aumenta la quota delle dimensioni dell'oggetto nella configurazione della sessione Microsoft.PowerShell nel computer remoto da 10 MB (valore predefinito) a 11 MB.
$setPSSessionConfigurationSplat = @{
Name = 'Microsoft.PowerShell'
MaximumReceivedObjectSizeMB = 11
Force = $true
}
Set-PSSessionConfiguration @setPSSessionConfigurationSplat
Per altre informazioni sulle quote WS-Management, vedere about_WSMan_Provider.
Come risolvere gli errori di timeout
È possibile usare timeout per proteggere il computer locale e il computer remoto da un uso eccessivo delle risorse, sia accidentale che dannoso. Quando i timeout vengono impostati sia nel computer locale che in quello remoto, PowerShell usa le impostazioni di timeout più brevi.
Quando un valore di timeout non consente il completamento di un'operazione, PowerShell termina l'operazione e genera l'errore seguente.
ERRORE: il servizio WS-Management non può completare l'operazione entro il tempo specificato in OperationTimeout.
Il provider WSMan ha le impostazioni di timeout seguenti.
- Impostazione MaxTimeoutMs nel
WSMan:<ComputerName>
nodo e nelle impostazioni EnumerationTimeoutMs e MaxPacketRetrievalTimeSeconds nelWSMan:<ComputerName>\Service
nodo. - È possibile proteggere il computer locale usando i parametri CancelTimeout, IdleTimeout, OpenTimeout e OperationTimeout del
New-PSSessionOption
cmdlet e della$PSSessionOption
variabile di preferenza. - È anche possibile proteggere il computer remoto impostando i valori di timeout a livello di codice nella configurazione della sessione per la sessione.
Per risolvere l'errore, modificare il comando in modo che venga completato entro l'intervallo di timeout o aumentare l'intervallo di timeout per consentire il completamento del comando.
L'esempio seguente crea un'opzione di sessione con un valore OperationTimeout di 4 minuti (in MS), quindi usa l'opzione di sessione per creare una sessione remota.
$pso = New-PSSessionOption -OperationTimeout 240000
New-PSSession -ComputerName Server01 -SessionOption $pso
Per altre informazioni sui timeout di WS-Management, vedere about_WSMan_Provider.
Come interrompere un comando che non risponde
Alcuni programmi nativi, ad esempio programmi con un'interfaccia utente, applicazioni console che richiedono l'input e applicazioni console che usano l'API della console Win32, non funzionano correttamente nell'host remoto di PowerShell.
Quando si usano questi programmi, è possibile che venga visualizzato un comportamento imprevisto, ad esempio nessun output, output parziale o un comando remoto che non viene completato.
Per terminare un programma che non risponde, digitare CTRL+C. Usare Get-Error
nell'host locale e nella sessione remota per visualizzare eventuali errori che potrebbero essere stati segnalati.
Come eseguire il ripristino da un errore dell'operazione
L'errore seguente viene restituito quando un'operazione viene terminata prima del completamento.
ERRORE: l'operazione di I/O è stata interrotta a causa di un'uscita del thread o di una richiesta dell'applicazione.
In genere, questo si verifica quando il servizio WinRM si arresta o riavvia mentre sono in corso altre operazioni WinRM.
Per risolvere questo problema, verificare che il servizio WinRM sia in esecuzione e riprovare.
Avviare PowerShell con l'opzione Esegui come amministratore .
Esegui questo comando:
Start-Service WinRM
Eseguire nuovamente il comando che ha generato l'errore.
Limitazioni di Linux e macOS
La comunicazione remota di PowerShell è Linux e macOS usando la comunicazione remota tramite SSH. Per altre informazioni, vedere Comunicazione remota di PowerShell su SSH.