Condividi tramite


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 Amministrazione istrators 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 Amministrazione istrators connettersi agli endpoint di sessione remota predefiniti. È possibile usare il parametro Credential dei New-PSSessioncmdlet o Enter-PSSessionInvoke-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 Amministrazione istrators in un computer dispongono dell'autorizzazione per usare le configurazioni di sessione predefinite. Pertanto, solo i membri del gruppo Amministrazione istrators 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 Amministrazione istrators nel computer locale, l'utente non può connettersi al computer locale in remoto con privilegi Amministrazione istrator. 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 Amministrazione istrators di eseguire con privilegi Amministrazione istrator.

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-PSSessioncmdlet e Enter-PSSessionInvoke-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 Amministrazione istrators 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 Connessione-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 Connessione ionURI 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'organizzazioneNew-PSSessionOption.
  • Usare la variabile contenente l'oggetto PSSessionOption con il parametro SessionOption di un New-PSSessioncomando , Enter-PSSessiono 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

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 Max Connessione ions nel WSMan:<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 nel WSMan:<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.

  1. Avviare PowerShell con l'opzione Esegui come amministratore .

  2. Esegui questo comando:

    Start-Service WinRM

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

Vedi anche