about_Remote_FAQAbout Remote FAQ

Breve descrizioneShort description

Contiene domande e risposte sull'esecuzione di comandi remoti in PowerShell.Contains questions and answers about running remote commands in PowerShell.

Descrizione lungaLong description

Quando si lavora in modalità remota, si digitano i comandi in PowerShell in un computer (noto come "computer locale"), ma i comandi vengono eseguiti in un altro computer (noto come "computer remoto").When you work remotely, you type commands in PowerShell on one computer (known as the "local computer"), but the commands run on another computer (known as the "remote computer"). L'esperienza di lavoro in remoto dovrebbe essere analoga a quella che si può usare direttamente nel computer remoto.The experience of working remotely should be as much like working directly at the remote computer as possible.

Nota: per usare la comunicazione remota di PowerShell, il computer remoto deve essere configurato per la comunicazione remota.Note: To use PowerShell remoting, the remote computer must be configured for remoting. Per altre informazioni, vedere about_Remote_Requirements.For more information, see about_Remote_Requirements.

È necessario che sia installato PowerShell per entrambi i computer?Must both computers have PowerShell installed?

Sì.Yes. Per lavorare in modalità remota, è necessario che nei computer locali e remoti siano disponibili PowerShell, il Framework Microsoft .NET e il protocollo WS-Management (Web Services for Management).To work remotely, the local and remote computers must have PowerShell, the Microsoft .NET Framework, and the Web Services for Management (WS-Management) protocol. Tutti i file e altre risorse necessari per eseguire un particolare comando devono trovarsi nel computer remoto.Any files and other resources that are needed to execute a particular command must be on the remote computer.

I computer che eseguono Windows PowerShell 3,0 e i computer che eseguono Windows PowerShell 2,0 possono connettersi tra loro in remoto ed eseguire comandi remoti.Computers running Windows PowerShell 3.0 and computers running Windows PowerShell 2.0 can connect to each other remotely and run remote commands. Tuttavia, alcune funzionalità, ad esempio la possibilità di disconnettersi da una sessione e riconnettersi, funzionano solo quando entrambi i computer eseguono Windows PowerShell 3,0.However, some features, such as the ability to disconnect from a session and reconnect to it, work only when both computers are running Windows PowerShell 3.0.

È necessario disporre dell'autorizzazione per la connessione al computer remoto, l'autorizzazione per l'esecuzione di PowerShell e l'autorizzazione per accedere agli archivi dati (ad esempio file e cartelle) e al registro di sistema nel computer remoto.You must have permission to connect to the remote computer, permission to run PowerShell, and permission to access data stores (such as files and folders), and the registry on the remote computer.

Per altre informazioni, vedere about_Remote_Requirements.For more information, see about_Remote_Requirements.

Come funziona la comunicazione remota?How does remoting work?

Quando si invia un comando remoto, il comando viene trasmesso attraverso la rete al motore di PowerShell nel computer remoto e viene eseguito nel client di PowerShell nel computer remoto.When you submit a remote command, the command is transmitted across the network to the PowerShell engine on the remote computer, and it runs in the PowerShell client on the remote computer. I risultati del comando vengono restituiti al computer locale e vengono visualizzati nella sessione di PowerShell nel computer locale.The command results are sent back to the local computer and appear in the PowerShell session on the local computer.

Per trasmettere i comandi e ricevere l'output, PowerShell usa il protocollo WS-Management.To transmit the commands and receive the output, PowerShell uses the WS-Management protocol. Per informazioni sul protocollo WS-Management, vedere protocollo WS-Management nella documentazione di Windows.For information about the WS-Management protocol, see WS-Management Protocol in the Windows documentation.

A partire da Windows PowerShell 3,0, le sessioni remote vengono archiviate nel computer remoto.Beginning in Windows PowerShell 3.0, remote sessions are stored on the remote computer. In questo modo è possibile disconnettersi dalla sessione e riconnettersi da un'altra sessione o da un computer diverso senza interrompere i comandi o perdere lo stato.This enables you to disconnect from the session and reconnect from a different session or a different computer without interrupting the commands or losing state.

La comunicazione remota di PowerShell è sicura?Is PowerShell remoting secure?

Quando ci si connette a un computer remoto, il sistema usa le credenziali di nome utente e password nel computer locale o le credenziali fornite nel comando per accedere al computer remoto.When you connect to a remote computer, the system uses the username and password credentials on the local computer or the credentials that you supply in the command to log you in to the remote computer. Le credenziali e il resto della trasmissione vengono crittografati.The credentials and the rest of the transmission are encrypted.

Per aggiungere protezione aggiuntiva, è possibile configurare il computer remoto per l'utilizzo di Secure Sockets Layer (SSL) invece di HTTP per l'ascolto delle richieste di Gestione remota Windows (WinRM).To add additional protection, you can configure the remote computer to use Secure Sockets Layer (SSL) instead of HTTP to listen for Windows Remote Management (WinRM) requests. Quindi, gli utenti possono utilizzare il parametro UseSSL dei Invoke-Command New-PSSession cmdlet, e Enter-PSSession quando si stabilisce una connessione.Then, users can use the UseSSL parameter of the Invoke-Command, New-PSSession, and Enter-PSSession cmdlets when establishing a connection. Questa opzione Usa il canale HTTPS più sicuro anziché il protocollo HTTP.This option uses the more secure HTTPS channel instead of HTTP.

Tutti i comandi remoti richiedono la comunicazione remota di PowerShell?Do all remote commands require PowerShell remoting?

No.No. Diversi cmdlet hanno un parametro ComputerName che consente di ottenere oggetti dal computer remoto.Several cmdlets have a ComputerName parameter that lets you get objects from the remote computer.

Questi cmdlet non usano la comunicazione remota di PowerShell.These cmdlets do not use PowerShell remoting. Quindi, è possibile usarli in qualsiasi computer che esegue PowerShell, anche se il computer non è configurato per la comunicazione remota di PowerShell o se il computer non soddisfa i requisiti per la comunicazione remota di PowerShell.So, you can use them on any computer that is running PowerShell, even if the computer is not configured for PowerShell remoting or if the computer does not meet the requirements for PowerShell remoting.

Questi cmdlet includono i seguenti:These cmdlets include the following:

  • Get-Process
  • Get-Service
  • Get-WinEvent
  • Get-EventLog
  • Test-Connection

Per trovare tutti i cmdlet con un parametro ComputerName , digitare:To find all the cmdlets with a ComputerName parameter, type:

Get-Help * -Parameter ComputerName
# or
Get-Command -ParameterName ComputerName

Per determinare se il parametro ComputerName di un cmdlet specifico richiede la comunicazione remota di PowerShell, vedere la descrizione del parametro.To determine whether the ComputerName parameter of a particular cmdlet requires PowerShell remoting, see the parameter description. Per visualizzare la descrizione del parametro, digitare:To display the parameter description, type:

Get-Help <cmdlet-name> -Parameter ComputerName

Ad esempio:For example:

Get-Help Get-Process -Parameter ComputerName

Per tutti gli altri comandi, usare il Invoke-Command cmdlet.For all other commands, use the Invoke-Command cmdlet.

Ricerca per categorie eseguire un comando in un computer remoto?How do I run a command on a remote computer?

Per eseguire un comando in un computer remoto, usare il Invoke-Command cmdlet.To run a command on a remote computer, use the Invoke-Command cmdlet.

Racchiudere il comando tra parentesi graffe ( {} ) per impostarlo come blocco di script.Enclose your command in braces ({}) to make it a script block. Usare il parametro scriptblock di Invoke-Command per specificare il comando.Use the ScriptBlock parameter of Invoke-Command to specify the command.

È possibile usare il parametro ComputerName di Invoke-Command per specificare un computer remoto.You can use the ComputerName parameter of Invoke-Command to specify a remote computer. In alternativa, è possibile creare una connessione permanente a un computer remoto (una sessione) e quindi usare il parametro Session di Invoke-Command per eseguire il comando nella sessione.Or, you can create a persistent connection to a remote computer (a session) and then use the Session parameter of Invoke-Command to run the command in the session.

Ad esempio, i comandi seguenti eseguono un Get-Process comando in modalità remota.For example, the following commands run a Get-Process command remotely.

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-Process}

#  - OR -

Invoke-Command -Session $s -ScriptBlock {Get-Process}

Per interrompere un comando remoto, digitare CTRL + C.To interrupt a remote command, type CTRL+C. La richiesta di interruzione viene passata al computer remoto, dove termina il comando remoto.The interruption request is passed to the remote computer, where it terminates the remote command.

Per ulteriori informazioni sui comandi remoti, vedere about_Remote e gli argomenti della Guida per i cmdlet che supportano la comunicazione remota.For more information about remote commands, see about_Remote and the Help topics for the cmdlets that support remoting.

È possibile accedere a un computer remoto con Telnet?Can I just telnet into a remote computer?

È possibile utilizzare il Enter-PSSession cmdlet per avviare una sessione interattiva con un computer remoto.You can use the Enter-PSSession cmdlet to start an interactive session with a remote computer.

Al prompt di PowerShell digitare:At the PowerShell prompt, type:

Enter-PSSession <ComputerName>

Il prompt dei comandi cambia per indicare che si è connessi al computer remoto.The command prompt changes to show that you are connected to the remote computer.

<ComputerName>\C:>

A questo punto, i comandi digitati vengono eseguiti nel computer remoto come se fossero stati digitati direttamente nel computer remoto.Now, the commands that you type run on the remote computer just as though you typed them directly on the remote computer.

Per terminare una sessione interattiva, digitare:To end the interactive session, type:

Exit-PSSession

Una sessione interattiva è una sessione persistente che usa il protocollo WS-Management.An interactive session is a persistent session that uses the WS-Management protocol. Non corrisponde all'uso di Telnet, ma offre un'esperienza simile.It is not the same as using Telnet, but it provides a similar experience.

Per altre informazioni, vedere Enter-PSSession.For more information, see Enter-PSSession.

È possibile creare una connessione permanente?Can I create a persistent connection?

Sì.Yes. È possibile eseguire comandi remoti specificando il nome del computer remoto, il nome NetBIOS o l'indirizzo IP.You can run remote commands by specifying the name of the remote computer, its NetBIOS name, or its IP address. In alternativa, è possibile eseguire comandi remoti specificando una sessione di PowerShell (PSSession) connessa al computer remoto.Or, you can run remote commands by specifying a PowerShell session (PSSession) that is connected to the remote computer.

Quando si usa il parametro ComputerName di Invoke-Command o Enter-PSSession , PowerShell stabilisce una connessione temporanea.When you use the ComputerName parameter of Invoke-Command or Enter-PSSession, PowerShell establishes a temporary connection. PowerShell usa la connessione per eseguire solo il comando corrente e quindi chiude la connessione.PowerShell uses the connection to run only the current command, and then it closes the connection. Si tratta di un metodo molto efficiente per eseguire un singolo comando o diversi comandi non correlati, anche in molti computer remoti.This is a very efficient method for running a single command or several unrelated commands, even on many remote computers.

Quando si usa il New-PSSession cmdlet per creare una sessione PSSession, PowerShell stabilisce una connessione permanente per la sessione PSSession.When you use the New-PSSession cmdlet to create a PSSession, PowerShell establishes a persistent connection for the PSSession. Quindi, è possibile eseguire più comandi nella sessione PSSession, inclusi i comandi che condividono i dati.Then, you can run multiple commands in the PSSession, including commands that share data.

In genere, si crea una sessione PSSession per eseguire una serie di comandi correlati che condividono i dati.Typically, you create a PSSession to run a series of related commands that share data. In caso contrario, la connessione temporanea creata dal parametro ComputerName è sufficiente per la maggior parte dei comandi.Otherwise, the temporary connection created by the ComputerName parameter is sufficient for most commands.

Per ulteriori informazioni sulle sessioni, vedere about_PSSessions.For more information about sessions, see about_PSSessions.

È possibile eseguire comandi su più di un computer alla volta?Can I run commands on more than one computer at a time?

Sì.Yes. Il parametro ComputerName del Invoke-Command cmdlet accetta più nomi di computer e il parametro Session accetta più sessioni PSSession.The ComputerName parameter of the Invoke-Command cmdlet accepts multiple computer names, and the Session parameter accepts multiple PSSessions.

Quando si esegue un Invoke-Command comando, PowerShell esegue i comandi in tutti i computer specificati o in tutte le sessioni PSSession specificate.When you run an Invoke-Command command, PowerShell runs the commands on all of the specified computers or in all of the specified PSSessions.

PowerShell è in grado di gestire centinaia di connessioni remote simultanee.PowerShell can manage hundreds of concurrent remote connections. Il numero di comandi remoti che è possibile inviare potrebbe tuttavia essere limitato dalle risorse del computer e dalla capacità di stabilire e gestire più connessioni di rete.However, the number of remote commands that you can send might be limited by the resources of your computer and its capacity to establish and maintain multiple network connections.

Per ulteriori informazioni, vedere l'esempio nell' Invoke-Command argomento della guida.For more information, see the example in the Invoke-Command Help topic.

Dove si trovano i profili?Where are my profiles?

I profili di PowerShell non vengono eseguiti automaticamente nelle sessioni remote, quindi i comandi aggiunti dal profilo non sono presenti nella sessione.PowerShell profiles are not run automatically in remote sessions, so the commands that the profile adds are not present in the session. Inoltre, la $profile variabile automatica non viene popolata in sessioni remote.In addition, the $profile automatic variable is not populated in remote sessions.

Per eseguire un profilo in una sessione, usare il Invoke-Command cmdlet.To run a profile in a session, use the Invoke-Command cmdlet.

Ad esempio, il comando seguente esegue il profilo CurrentUserCurrentHost dal computer locale nella sessione in $s .For example, the following command runs the CurrentUserCurrentHost profile from the local computer in the session in $s.

Invoke-Command -Session $s -FilePath $profile

Il comando seguente esegue il profilo CurrentUserCurrentHost dal computer remoto nella sessione in $s .The following command runs the CurrentUserCurrentHost profile from the remote computer in the session in $s. Poiché la $profile variabile non è popolata, il comando usa il percorso esplicito del profilo.Because the $profile variable is not populated, the command uses the explicit path to the profile.

Invoke-Command -Session $s {
  . "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

Dopo aver eseguito questo comando, i comandi aggiunti dal profilo alla sessione sono disponibili in $s .After running this command, the commands that the profile adds to the session are available in $s.

È anche possibile usare uno script di avvio in una configurazione di sessione per eseguire un profilo in ogni sessione remota che usa la configurazione di sessione.You can also use a startup script in a session configuration to run a profile in every remote session that uses the session configuration.

Per ulteriori informazioni sui profili di PowerShell, vedere about_Profiles.For more information about PowerShell profiles, see about_Profiles. Per ulteriori informazioni sulle configurazioni di sessione, vedere Register-PSSessionConfiguration .For more information about session configurations, see Register-PSSessionConfiguration.

Come funziona la limitazione delle richieste sui comandi remoti?How does throttling work on remote commands?

Per semplificare la gestione delle risorse nel computer locale, PowerShell include una funzionalità di limitazione per comando che consente di limitare il numero di connessioni remote simultanee stabilite per ogni comando.To help you manage the resources on your local computer, PowerShell includes a per-command throttling feature that lets you limit the number of concurrent remote connections that are established for each command.

Il valore predefinito è 32 connessioni simultanee, ma è possibile usare il parametro ThrottleLimit dei cmdlet per impostare un limite di velocità personalizzato per determinati comandi.The default is 32 concurrent connections, but you can use the ThrottleLimit parameter of the cmdlets to set a custom throttle limit for particular commands.

Quando si usa la funzionalità di limitazione, tenere presente che viene applicata a ogni comando, non all'intera sessione o al computer.When you use the throttling feature, remember that it is applied to each command, not to the entire session or to the computer. Se i comandi vengono eseguiti simultaneamente in più sessioni o sessioni PSSession, il numero di connessioni simultanee è la somma delle connessioni simultanee in tutte le sessioni.If you are running commands concurrently in several sessions or PSSessions, the number of concurrent connections is the sum of the concurrent connections in all the sessions.

Per trovare i cmdlet con un parametro ThrottleLimit , digitare:To find cmdlets with a ThrottleLimit parameter, type:

Get-Help * -Parameter ThrottleLimit
-or-
Get-Command -ParameterName ThrottleLimit

L'output dei comandi remoti è diverso dall'output locale?Is the output of remote commands different from local output?

Quando si usa PowerShell in locale, si inviano e si ricevono oggetti "attivi" .NET Framework; gli oggetti "attivi" sono oggetti associati a programmi o componenti di sistema effettivi.When you use PowerShell locally, you send and receive "live" .NET Framework objects; "live" objects are objects that are associated with actual programs or system components. Quando si richiamano i metodi o si modificano le proprietà degli oggetti attivi, le modifiche interessano il programma o il componente effettivo.When you invoke the methods or change the properties of live objects, the changes affect the actual program or component. Inoltre, quando le proprietà di un programma o di un componente cambiano, cambiano anche le proprietà dell'oggetto che li rappresentano.And, when the properties of a program or component change, the properties of the object that represent them also change.

Tuttavia, poiché la maggior parte degli oggetti attivi non può essere trasmessa in rete, PowerShell "serializza" la maggior parte degli oggetti inviati nei comandi remoti, ovvero converte ogni oggetto in una serie di elementi dati XML (Constraint Language in XML [CLiXML]) per la trasmissione.However, because most live objects cannot be transmitted over the network, PowerShell "serializes" most of the objects sent in remote commands, that is, it converts each object into a series of XML (Constraint Language in XML [CLiXML]) data elements for transmission.

Quando PowerShell riceve un oggetto serializzato, il codice XML viene convertito in un tipo di oggetto deserializzato.When PowerShell receives a serialized object, it converts the XML into a deserialized object type. L'oggetto deserializzato è un record accurato delle proprietà del programma o del componente in un momento precedente, ma non è più "attivo", ovvero non è più associato direttamente al componente.The deserialized object is an accurate record of the properties of the program or component at a previous time, but it is no longer "live", that is, it is no longer directly associated with the component. E i metodi vengono rimossi perché non sono più efficaci.And, the methods are removed because they are no longer effective.

In genere, è possibile usare oggetti deserializzati esattamente come si usano gli oggetti attivi, ma è necessario essere a conoscenza delle relative limitazioni.Typically, you can use deserialized objects just as you would use live objects, but you must be aware of their limitations. Inoltre, gli oggetti restituiti dal Invoke-Command cmdlet hanno proprietà aggiuntive che consentono di determinare l'origine del comando.Also, the objects that are returned by the Invoke-Command cmdlet have additional properties that help you to determine the origin of the command.

Alcuni tipi di oggetto, ad esempio oggetti DirectoryInfo e GUID, vengono convertiti di nuovo in oggetti attivi quando vengono ricevuti.Some object types, such as DirectoryInfo objects and GUIDs, are converted back into live objects when they are received. Questi oggetti non necessitano di alcuna gestione o formattazione speciale.These objects do not need any special handling or formatting.

Per informazioni sull'interpretazione e la formattazione dell'output remoto, vedere about_Remote_Output.For information about interpreting and formatting remote output, see about_Remote_Output.

È possibile eseguire processi in background in modalità remota?Can I run background jobs remotely?

Sì.Yes. Un processo in background di PowerShell è un comando di PowerShell che viene eseguito in modo asincrono senza interagire con la sessione.A PowerShell background job is a PowerShell command that runs asynchronously without interacting with the session. Quando si avvia un processo in background, il prompt dei comandi viene restituito immediatamente ed è possibile continuare a lavorare nella sessione mentre il processo viene eseguito anche se viene eseguito per un lungo periodo di tempo.When you start a background job, the command prompt returns immediately, and you can continue to work in the session while the job runs even if it runs for an extended period of time.

È possibile avviare un processo in background anche mentre sono in esecuzione altri comandi perché i processi in background vengono sempre eseguiti in modo asincrono in una sessione temporanea.You can start a background job even while other commands are running because background jobs always run asynchronously in a temporary session.

È possibile eseguire processi in background in un computer locale o remoto.You can run background jobs on a local or remote computer. Per impostazione predefinita, un processo in background viene eseguito nel computer locale.By default, a background job runs on the local computer. Tuttavia, è possibile usare il parametro AsJob del Invoke-Command cmdlet per eseguire qualsiasi comando remoto come processo in background.However, you can use the AsJob parameter of the Invoke-Command cmdlet to run any remote command as a background job. È quindi possibile usare Invoke-Command per eseguire un Start-Job comando in modalità remota.And, you can use Invoke-Command to run a Start-Job command remotely.

Per ulteriori informazioni sui processi in background in PowerShell, vedere [about_Jobs (about_Jobs. MD)] e [about_Remote_Jobs (about_Remote_Jobs. MD)].For more information about background jobs in PowerShell , see [about_Jobs(about_Jobs.md)] and [about_Remote_Jobs(about_Remote_Jobs.md)].

È possibile eseguire programmi Windows in un computer remoto?Can I run windows programs on a remote computer?

È possibile usare i comandi remoti di PowerShell per eseguire programmi basati su Windows in computer remoti.You can use PowerShell remote commands to run Windows-based programs on remote computers. Ad esempio, è possibile eseguire Shutdown.exe o Ipconfig.exe in un computer remoto.For example, you can run Shutdown.exe or Ipconfig.exe on a remote computer.

Tuttavia, non è possibile usare i comandi di PowerShell per aprire l'interfaccia utente per un programma in un computer remoto.However, you cannot use PowerShell commands to open the user interface for any program on a remote computer.

Quando si avvia un programma di Windows in un computer remoto, il comando non viene completato e il prompt dei comandi di PowerShell non restituisce, fino a quando il programma non viene terminato o fino a quando non si preme CTRL + C per interrompere il comando.When you start a Windows program on a remote computer, the command is not completed, and the PowerShell command prompt does not return, until the program is finished or until you press CTRL+C to interrupt the command. Se, ad esempio, si esegue il Ipconfig.exe programma in un computer remoto, il prompt dei comandi non viene restituito finché non Ipconfig.exe viene completato.For example, if you run the Ipconfig.exe program on a remote computer, the command prompt does not return until Ipconfig.exe is completed.

Se si usano comandi remoti per avviare un programma con un'interfaccia utente, viene avviato il processo del programma, ma l'interfaccia utente non viene visualizzata.If you use remote commands to start a program that has a user interface, the program process starts, but the user interface does not appear. Il comando di PowerShell non è stato completato e il prompt dei comandi non viene restituito fino a quando non si arresta il processo del programma o fino a quando non si preme CTRL + C, che interrompe il comando e arresta il processo.The PowerShell command is not completed, and the command prompt does not return until you stop the program process or until you press CTRL+C, which interrupts the command and stops the process.

Se, ad esempio, si utilizza un comando di PowerShell per Notepad l'esecuzione in un computer remoto, il processo del blocco note viene avviato nel computer remoto, ma non viene visualizzata l'interfaccia utente del blocco note.For example, if you use a PowerShell command to run Notepad on a remote computer, the Notepad process starts on the remote computer, but the Notepad user interface does not appear. Per interrompere il comando e ripristinare il prompt dei comandi, premere CTRL + C.To interrupt the command and restore the command prompt, press CTRL+C.

È possibile limitare i comandi che gli utenti possono eseguire in remoto nel computer?Can I limit the commands that users can run remotely on my computer?

Sì.Yes. Ogni sessione remota deve usare una delle configurazioni di sessione nel computer remoto.Every remote session must use one of the session configurations on the remote computer. È possibile gestire le configurazioni di sessione nel computer (e le autorizzazioni per le configurazioni di sessione) per determinare chi può eseguire i comandi in remoto nel computer e quali comandi possono eseguire.You can manage the session configurations on your computer (and the permissions to those session configurations) to determine who can run commands remotely on your computer and which commands they can run.

Una configurazione di sessione configura l'ambiente per la sessione.A session configuration configures the environment for the session. È possibile definire la configurazione usando un assembly che implementa una nuova classe di configurazione o usando uno script eseguito nella sessione.You can define the configuration by using an assembly that implements a new configuration class or by using a script that runs in the session. La configurazione può determinare i comandi disponibili nella sessione.The configuration can determine the commands that are available in the session. La configurazione può includere anche impostazioni che proteggono il computer, ad esempio le impostazioni che limitano la quantità di dati che la sessione può ricevere in remoto in un singolo oggetto o comando.And, the configuration can include settings that protect the computer, such as settings that limit the amount of data that the session can receive remotely in a single object or command. È anche possibile specificare un descrittore di sicurezza che determina le autorizzazioni necessarie per usare la configurazione.You can also specify a security descriptor that determines the permissions that are required to use the configuration.

Il Enable-PSRemoting cmdlet crea le configurazioni di sessione predefinite nel computer: Microsoft. PowerShell, Microsoft. PowerShell. Workflow e Microsoft. powershell32 (solo per i sistemi operativi a 64 bit).The Enable-PSRemoting cmdlet creates the default session configurations on your computer: Microsoft.PowerShell, Microsoft.PowerShell.Workflow, and Microsoft.PowerShell32 (64-bit operating systems only). Enable-PSRemoting imposta il descrittore di sicurezza per la configurazione in modo da consentire l'utilizzo solo dei membri del gruppo Administrators nel computer.Enable-PSRemoting sets the security descriptor for the configuration to allow only members of the Administrators group on your computer to use them.

È possibile utilizzare i cmdlet di configurazione di sessione per modificare le configurazioni di sessione predefinite, per creare nuove configurazioni di sessione e per modificare i descrittori di sicurezza di tutte le configurazioni di sessione.You can use the session configuration cmdlets to edit the default session configurations, to create new session configurations, and to change the security descriptors of all the session configurations.

A partire da Windows PowerShell 3,0, il New-PSSessionConfigurationFile cmdlet consente di creare configurazioni di sessione personalizzate usando un file di testo.Beginning in Windows PowerShell 3.0, the New-PSSessionConfigurationFile cmdlet lets you create custom session configurations by using a text file. Il file include opzioni per l'impostazione della modalità del linguaggio e per specificare i cmdlet e i moduli disponibili nelle sessioni che usano la configurazione di sessione.The file includes options for setting the language mode and for specifying the cmdlets and modules that are available in sessions that use the session configuration.

Quando gli utenti usano Invoke-Command i New-PSSession cmdlet, o Enter-PSSession , possono usare il parametro ConfigurationName per indicare la configurazione di sessione usata per la sessione.When users use the Invoke-Command, New-PSSession, or Enter-PSSession cmdlets, they can use the ConfigurationName parameter to indicate the session configuration that is used for the session. E possono modificare la configurazione predefinita utilizzata dalle sessioni modificando il valore della $PSSessionConfigurationName variabile di preferenza nella sessione.And, they can change the default configuration that their sessions use by changing the value of the $PSSessionConfigurationName preference variable in the session.

Per ulteriori informazioni sulle configurazioni di sessione, vedere la guida per i cmdlet di configurazione della sessione.For more information about session configurations, see the Help for the session configuration cmdlets. Per trovare i cmdlet di configurazione di sessione, digitare:To find the session configuration cmdlets, type:

Get-Command *PSSessionConfiguration

Che cosa sono le configurazioni di fan-out e fan-out?What are fan in and fan out configurations?

Lo scenario più comune di comunicazione remota di PowerShell che interessa più computer è la configurazione uno-a-molti, in cui un computer locale (il computer dell'amministratore) esegue i comandi di PowerShell in numerosi computer remoti.The most common PowerShell remoting scenario involving multiple computers is the one-to-many configuration, in which one local computer (the administrator's computer) runs PowerShell commands on numerous remote computers. Questo scenario è noto come scenario di "fan-out".This is known as the "fan-out" scenario.

Tuttavia, in alcune aziende, la configurazione è molti-a-uno, dove molti computer client si connettono a un singolo computer remoto che esegue PowerShell, ad esempio un file server o un chiosco multimediale.However, in some enterprises, the configuration is many-to-one, where many client computers connect to a single remote computer that is running PowerShell, such as a file server or a kiosk. Questa operazione è nota come configurazione "ventola in".This is known as the "fan-in" configuration.

La comunicazione remota di PowerShell supporta le configurazioni fan-out e fan-in.PowerShell remoting supports both fan-out and fan-in configurations.

Per la configurazione di fan-out, PowerShell usa il protocollo WS-Management (Web Services for Management) e il servizio gestione remota Windows che supporta l'implementazione Microsoft di WS-Management.For the fan-out configuration, PowerShell uses the Web Services for Management (WS-Management) protocol and the WinRM service that supports the Microsoft implementation of WS-Management. Quando un computer locale si connette a un computer remoto, WS-Management stabilisce una connessione e usa un plug-in per PowerShell per avviare il processo host di PowerShell (Wsmprovhost.exe) nel computer remoto.When a local computer connects to a remote computer, WS-Management establishes a connection and uses a plug-in for PowerShell to start the PowerShell host process (Wsmprovhost.exe) on the remote computer. L'utente può specificare una porta alternativa, una configurazione di sessione alternativa e altre funzionalità per personalizzare la connessione remota.The user can specify an alternate port, an alternate session configuration, and other features to customize the remote connection.

Per supportare la configurazione "ventola", PowerShell usa Internet Information Services (IIS) per ospitare WS-Management, caricare il plug-in di PowerShell e avviare PowerShell.To support the "fan-in" configuration, PowerShell uses internet Information Services (IIS) to host WS-Management, to load the PowerShell plug-in, and to start PowerShell. In questo scenario, anziché avviare ogni sessione di PowerShell in un processo separato, tutte le sessioni di PowerShell vengono eseguite nello stesso processo host.In this scenario, instead of starting each PowerShell session in a separate process, all PowerShell sessions run in the same host process.

L'hosting di IIS e la gestione remota di fan-in non sono supportati in Windows XP o in Windows Server 2003.IIS hosting and fan-in remote management is not supported in Windows XP or in Windows Server 2003.

In una configurazione di ventola, l'utente può specificare un URI di connessione e un endpoint HTTP, inclusi il trasporto, il nome del computer, la porta e il nome dell'applicazione.In a fan-in configuration, the user can specify a connection URI and an HTTP endpoint, including the transport, computer name, port, and application name. IIS invia all'applicazione tutte le richieste con un nome di applicazione specificato.IIS forwards all the requests with a specified application name to the application. Il valore predefinito è WS-Management, che può ospitare PowerShell.The default is WS-Management, which can host PowerShell.

È anche possibile specificare un meccanismo di autenticazione e impedire o consentire il Reindirizzamento da endpoint HTTP e HTTPS.You can also specify an authentication mechanism and prohibit or allow redirection from HTTP and HTTPS endpoints.

È possibile testare la comunicazione remota in un singolo computer che non si trovi in un dominio?Can I test remoting on a single computer not in a domain?

Sì.Yes. La comunicazione remota di PowerShell è disponibile anche quando il computer locale non è in un dominio.PowerShell remoting is available even when the local computer is not in a domain. È possibile utilizzare le funzionalità di comunicazione remota per connettersi alle sessioni e creare sessioni nello stesso computer.You can use the remoting features to connect to sessions and to create sessions on the same computer. Le funzionalità funzionano allo stesso modo di quando ci si connette a un computer remoto.The features work the same as they do when you connect to a remote computer.

Per eseguire comandi remoti in un computer di un gruppo di lavoro, modificare le impostazioni di Windows seguenti nel computer.To run remote commands on a computer in a workgroup, change the following Windows settings on the computer.

Attenzione: queste impostazioni interessano tutti gli utenti del sistema e possono rendere il sistema più vulnerabile a un attacco dannoso.Caution: These settings affect all users on the system and they can make the system more vulnerable to a malicious attack. Prestare attenzione quando si apportano queste modifiche.Use caution when making these changes.

  • Windows Vista, Windows 7, Windows 8:Windows Vista, Windows 7, Windows 8:

    Creare la seguente voce del registro di sistema e impostarne il valore su 1: LocalAccountTokenFilterPolicy in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\SystemCreate the following registry entry, and then set its value to 1: LocalAccountTokenFilterPolicy in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

    Per aggiungere questa voce, è possibile usare il comando di PowerShell seguente:You can use the following PowerShell command to add this entry:

    $parameters = @{
      Path='HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
      Name='LocalAccountTokenFilterPolicy'
      propertyType='DWord'
      Value=1
    }
    New-ItemProperty @parameters
    
  • Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2012 R2:Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2012 R2:

    Non sono necessarie modifiche perché l'impostazione predefinita del criterio "accesso alla rete: modello di condivisione e sicurezza per gli account locali" è "classica".No changes are needed because the default setting of the "Network Access: Sharing and security model for local accounts" policy is "Classic". Verificare l'impostazione nel caso in cui sia stata modificata.Verify the setting in case it has changed.

È possibile eseguire comandi remoti in un computer in un altro dominio?Can I run remote commands on a computer in another domain?

Sì.Yes. In genere, i comandi vengono eseguiti senza errori, anche se potrebbe essere necessario Credential utilizzare il parametro Credential Invoke-Command dei New-PSSession cmdlet, o Enter-PSSession per fornire le credenziali di un membro del gruppo Administrators nel computer remoto.Typically, the commands run without error, although you might need to use the Credential parameter of the Invoke-Command, New-PSSession, or Enter-PSSession cmdlets to provide the credentials of a member of the Administrators group on the remote computer. Questa operazione è talvolta necessaria anche quando l'utente corrente è un membro del gruppo Administrators nei computer locali e remoti.This is sometimes required even when the current user is a member of the Administrators group on the local and remote computers.

Tuttavia, se il computer remoto non si trova in un dominio considerato attendibile dal computer locale, il computer remoto potrebbe non essere in grado di autenticare le credenziali dell'utente.However, if the remote computer is not in a domain that the local computer trusts, the remote computer might not be able to authenticate the user's credentials.

Per abilitare l'autenticazione, utilizzare il comando seguente per aggiungere il computer remoto all'elenco di host attendibili per il computer locale in WinRM.To enable authentication, use the following command to add the remote computer to the list of trusted hosts for the local computer in WinRM. Digitare il comando al prompt di PowerShell.Type the command at the PowerShell prompt.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value <Remote-computer-name>

Ad esempio, per aggiungere il computer Server01 all'elenco di host attendibili nel computer locale, digitare il comando seguente al prompt di PowerShell:For example, to add the Server01 computer to the list of trusted hosts on the local computer, type the following command at the PowerShell prompt:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value Server01

PowerShell supporta la comunicazione remota tramite SSH?Does PowerShell support remoting over SSH?

Sì.Yes. Per altre informazioni, vedere comunicazione remota di PowerShell su SSH.For more information, see PowerShell remoting over SSH.

Vedere ancheSee also

about_Remoteabout_Remote

about_Profilesabout_Profiles

about_PSSessionsabout_PSSessions

about_Remote_Jobsabout_Remote_Jobs

about_Remote_Variablesabout_Remote_Variables

Invoke-CommandInvoke-Command

New-PSSessionNew-PSSession