Condividi tramite


Enable-PSRemoting

Configura il computer per ricevere i comandi remoti.

Sintassi

Enable-PSRemoting
      [-Force]
      [-SkipNetworkProfileCheck]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Descrizione

Questo cmdlet è disponibile solo nella piattaforma Windows.

Il cmdlet Enable-PSRemoting configura il computer per ricevere i comandi remoti di PowerShell inviati tramite la tecnologia WS-Management. La comunicazione remota basata su WS-Management PowerShell è attualmente supportata solo sulla piattaforma Windows.

La comunicazione remota di PowerShell è abilitata per impostazione predefinita nelle piattaforme Windows Server. È possibile usare Enable-PSRemoting per abilitare la comunicazione remota di PowerShell in altre versioni supportate di Windows e riabilitare la comunicazione remota, se disabilitata.

È necessario eseguire questo comando una sola volta in ogni computer che riceve i comandi. Non è necessario eseguirlo nei computer che inviano solo comandi. Poiché la configurazione avvia i listener, è prudente eseguirlo solo dove è necessario.

L'abilitazione della comunicazione remota di PowerShell nelle versioni client di Windows quando il computer si trova in una rete pubblica di solito non è consentita, ma è possibile ignorare questa restrizione usando il parametro SkipNetworkProfileCheck. Per altre informazioni, vedere la descrizione del parametro SkipNetworkProfileCheck.

Più installazioni di PowerShell possono esistere side-by-side in un singolo computer. Eseguendo Enable-PSRemoting verrà configurato un endpoint di comunicazione remota per la specifica versione di installazione in cui viene eseguito il cmdlet. Pertanto, se si esegue Enable-PSRemoting durante l'uso di PowerShell 6.2, verrà configurato un endpoint remoto che esegue PowerShell 6.2. Se si esegue Enable-PSRemoting durante l'esecuzione di PowerShell 7-preview, verrà configurato un endpoint di comunicazione remota che esegue PowerShell 7-preview.

Enable-PSRemoting crea due configurazioni di endpoint remoti in base alle esigenze. Se le configurazioni dell'endpoint esistono già, vengono semplicemente assicurate di essere abilitate. Le configurazioni create sono identiche ma hanno nomi diversi. Uno avrà un nome semplice corrispondente alla versione di PowerShell che ospita la sessione. L'altro nome di configurazione contiene informazioni più dettagliate sulla versione di PowerShell che ospita la sessione. Ad esempio, quando si esegue Enable-PSRemoting in PowerShell 6.2, si otterranno due endpoint configurati denominati PowerShell.6, PowerShell.6.2.2. In questo modo è possibile creare una connessione alla versione più recente dell'host di PowerShell 6 usando il nome semplice PowerShell.6. In alternativa, è possibile connettersi a una versione host di PowerShell specifica usando il nome più lungo PowerShell.6.2.2.

Per usare gli endpoint remoti appena abilitati, è necessario specificarli in base al nome con il parametro ConfigurationName durante la creazione di una connessione remota usando i cmdlet Invoke-Command,New-PSSession,Enter-PSSession. Per altre informazioni, vedere Esempio 4.

Il cmdlet Enable-PSRemoting esegue le operazioni seguenti:

  • Esegue il cmdlet Set-WSManQuickConfig , che esegue le attività seguenti:
    • Avvia il servizio WinRM.
    • Imposta il tipo di avvio nel servizio WinRM su Automatico.
    • Crea un listener per accettare le richieste in qualsiasi indirizzo IP.
    • Abilita un'eccezione del firewall per le comunicazioni WS-Management.
    • Crea le configurazioni dell'endpoint sessione con nome semplice e lungo, se necessario.
    • Abilita tutte le configurazioni di sessione.
    • Modifica il descrittore di sicurezza di tutte le configurazioni di sessione per consentire l'accesso remoto.
  • Riavvia il servizio WinRM per rendere effettive le modifiche precedenti.

Per eseguire questo cmdlet nella piattaforma Windows, avviare PowerShell usando l'opzione Esegui come amministratore. Questo cmdlet non è disponibile nelle versioni linux o macOS di PowerShell.

Attenzione

Questo cmdlet non influisce sulle configurazioni degli endpoint remoti create da Windows PowerShell. Influisce solo sugli endpoint creati con PowerShell versione 6 e successive. Per abilitare e disabilitare gli endpoint remoti di PowerShell ospitati da Windows PowerShell, eseguire il cmdlet Enable-PSRemoting da una sessione di Windows PowerShell.

Per altre informazioni sull'uso del remoting di PowerShell, vedere gli articoli seguenti:

Esempio

Esempio 1: Configurare un computer per ricevere comandi remoti

Questo comando configura il computer per la ricezione di comandi remoti.

Enable-PSRemoting

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.

Esempio 2: Configurare un computer per ricevere comandi remoti senza un prompt di conferma

Questo comando configura il computer per la ricezione di comandi remoti. Il parametro Force elimina le richieste dell'utente.

Enable-PSRemoting -Force

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.

Esempio 3: Consentire l'accesso remoto nei client

In questo esempio viene illustrato come consentire l'accesso remoto dalle reti pubbliche nelle versioni client del sistema operativo Windows. 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.

Get-NetFirewallRule -Name 'WINRM*' | Select-Object -Property Name

Name
----
WINRM-HTTP-In-TCP-NoScope
WINRM-HTTP-In-TCP
WINRM-HTTP-Compat-In-TCP-NoScope
WINRM-HTTP-Compat-In-TCP

Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any

Per impostazione predefinita, Enable-PSRemoting crea regole di rete che consentono l'accesso remoto da reti private e di dominio. Il comando usa il parametro SkipNetworkProfileCheck per consentire l'accesso remoto da reti pubbliche nella stessa subnet locale. Il comando specifica il parametro Force per eliminare i messaggi di conferma.

Il parametro SkipNetworkProfileCheck non influisce sulle versioni del server del sistema operativo Windows, che consentono l'accesso remoto da reti pubbliche nella stessa subnet locale per impostazione predefinita.

Il cmdlet Set-NetFirewallRule nel modulo NetSecurity aggiunge una regola del firewall che consente l'accesso remoto da reti pubbliche da qualsiasi posizione remota. Sono incluse le posizioni in subnet diverse.

Esempio 4: Creare una sessione remota per la configurazione dell'endpoint appena abilitata

Questo esempio illustra come abilitare la remotizzazione di PowerShell su un computer, trovare i nomi degli endpoint configurati e creare una sessione remota su uno degli endpoint.

Il primo comando abilita il remoting di PowerShell sul computer.

Il secondo comando elenca le configurazioni dell'endpoint.

Il terzo comando crea una sessione remota di PowerShell nello stesso computer, specificando l'endpoint PowerShell.7 per nome. La sessione remota verrà ospitata con la versione più recente di PowerShell 7 (7.3.0).

L'ultimo comando accede alla variabile $PSVersionTable nella sessione remota per visualizzare la versione di PowerShell che ospita la sessione.

Enable-PSRemoting -Force

Get-PSSessionConfiguration

$session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7

Invoke-Command -Session $session -ScriptBlock { $PSVersionTable }

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.

Name          : PowerShell.7
PSVersion     : 7.3
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed,
                BUILTIN\Administrators AccessAllowed,
                BUILTIN\Remote Management Users AccessAllowed

Name          : PowerShell.7.3.0
PSVersion     : 7.3
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed,
                BUILTIN\Administrators AccessAllowed,
                BUILTIN\Remote Management Users AccessAllowed

Name                           Value
----                           -----
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSEdition                      Core
PSRemotingProtocolVersion      2.3
Platform                       Win32NT
SerializationVersion           1.1.0.1
GitCommitId                    6.2.2
WSManStackVersion              3.0
PSVersion                      6.2.2
OS                             Microsoft Windows 10.0.18363

Nota

Il nome della regola del firewall può essere diverso a seconda della versione di Windows. Usare il cmdlet Get-NetFirewallRule per elencare i nomi delle regole nel sistema.

Parametri

-Confirm

Richiede conferma prima di eseguire il cmdlet.

Tipo:SwitchParameter
Alias:cf
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Force

Forza l'esecuzione del comando senza chiedere conferma dell'utente.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-SkipNetworkProfileCheck

Indica che questo cmdlet abilita la comunicazione remota nelle versioni client del sistema operativo Windows quando il computer si trova in una rete pubblica. Questo parametro abilita una regola del firewall per le reti pubbliche che consente l'accesso remoto solo dai computer nella stessa subnet locale.

Questo parametro non influisce sulle versioni del server del sistema operativo Windows, che, per impostazione predefinita, hanno una regola del firewall della subnet locale per le reti pubbliche. Se la regola del firewall della subnet locale è disabilitata in una versione del server, Enable-PSRemoting la riattiva, indipendentemente dal valore di questo parametro.

Per rimuovere la restrizione della subnet locale e abilitare l'accesso remoto da tutte le posizioni nelle reti pubbliche, usare il cmdlet Set-NetFirewallRule nel modulo NetSecurity.

Questo parametro è stato introdotto in PowerShell 3.0.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-WhatIf

Mostra cosa accadrebbe se il cmdlet viene eseguito. Il cmdlet non viene eseguito.

Tipo:SwitchParameter
Alias:wi
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

Input

None

Non è possibile inviare tramite pipe oggetti a questo cmdlet.

Output

String

Questo cmdlet restituisce stringhe che ne descrivono i risultati.

Note

Questo cmdlet è disponibile solo nelle piattaforme Windows.

Nelle versioni server del sistema operativo Windows, Enable-PSRemoting crea regole del firewall per le reti private e di dominio che consentono l'accesso remoto e crea una regola del firewall per le reti pubbliche che consente l'accesso remoto solo dai computer nella stessa subnet locale.

Nelle versioni client del sistema operativo Windows, Enable-PSRemoting crea regole del firewall per le reti private e di dominio che consentono l'accesso remoto senza restrizioni. Per creare una regola del firewall per le reti pubbliche che consente l'accesso remoto dalla stessa subnet locale, usare il parametro SkipNetworkProfileCheck .

Nelle versioni client o server del sistema operativo Windows, per creare una regola del firewall per le reti pubbliche che rimuove la restrizione della subnet locale e consente l'accesso remoto , usare il cmdlet Set-NetFirewallRule nel modulo NetSecurity per eseguire il comando seguente: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Enable-PSRemoting abilita tutte le configurazioni di sessione impostando il valore della proprietà Enabled di tutte le configurazioni di sessione su $True.

Enable-PSRemoting rimuove le impostazioni di Deny_All e Network_Deny_All. In questo modo viene fornito l'accesso remoto alle configurazioni di sessione riservate per l'uso locale.