Crea una connessione permanente a un computer locale o remoto.

Sintassi

New-PSSession [[-ComputerName] <string[]>] [-ApplicationName <string>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-Port <int>] [-SessionOption <PSSessionOption>] [-UseSSL] [-ThrottleLimit <int>] [<CommonParameters>]

New-PSSession [[-Session] <PSSession[]>] [-Name <string[]>] [-ThrottleLimit <int>] [<CommonParameters>]

New-PSSession [-ConnectionURI] <Uri[]> [-AllowRedirection] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-SessionOption <PSSessionOption>] [-ThrottleLimit <int>] [<CommonParameters>]

Descrizione

Il cmdlet New-PSSession crea una sessione di Windows PowerShell (PSSession) in un computer locale o remoto. Quando si crea una sessione PSSession, Windows PowerShell stabilisce una connessione permanente al computer remoto.

Utilizzare una sessione PSSession per eseguire più comandi che condividono dati, ad esempio una funzione o il valore di una variabile. Per eseguire comandi in una sessione PSSession, utilizzare il cmdlet Invoke-Command. Per utilizzare la sessione PSSession per interagire direttamente con un computer remoto, utilizzare il cmdlet Enter-PSSession. Per ulteriori informazioni, vedere about_PSSessions.

È possibile eseguire comandi in un computer remoto senza creare una sessione PSSession tramite i parametri ComputerName di Enter-PSSession o Invoke-Command. Quando si utilizza il parametro ComputerName, in Windows PowerShell viene creata una connessione temporanea utilizzata per la sessione interattiva o per un singolo comando e quindi chiusa.

Parametri

-AllowRedirection

Consente il reindirizzamento di questa connessione a un URI alternativo.

Quando si utilizza il parametro ConnectionURI, la destinazione remota può restituire un'istruzione di reindirizzamento a un altro URI. Per impostazione predefinita in Windows PowerShell le connessioni non vengono reindirizzate, ma è possibile utilizzare il parametro AllowRedirection per consentire il reindirizzamento della connessione.

È inoltre possibile limitare il numero di volte in cui la connessione viene reindirizzata impostando la proprietà MaximumConnectionRedirectionCount della variabile di preferenza $PSSessionOption o la proprietà MaximumConnectionRedirectionCount del valore del parametro SessionOption.

Il valore predefinito è 5. Per ulteriori informazioni, vedere la descrizione del parametro SessionOption e New-PSSessionOption.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-ApplicationName <string>

Specifica il segmento del nome dell'applicazione dell'URI di connessione. Utilizzare questo parametro per specificare il nome dell'applicazione quando non si utilizza il parametro ConnectionURI nel comando.

Il valore predefinito è il valore della variabile di preferenza $PSSessionApplicationName nel computer locale. Se questa variabile non viene definita, il valore predefinito è WSMAN. Questo valore è appropriato per la maggior parte degli utilizzi. Per ulteriori informazioni, vedere about_Preference_Variables.

Il servizio Gestione remota Windows utilizza il nome dell’applicazione per selezionare un listener per la gestione della richiesta di connessione. Il valore di questo parametro deve corrispondere al valore della proprietà URLPrefix di un listener nel computer remoto.

Obbligatorio?

false

Posizione?

named

Valore predefinito

WSMAN

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-Authentication <AuthenticationMechanism>

Specifica il meccanismo utilizzato per autenticare le credenziali dell'utente. I valori validi sono "Default", "Basic", "Credssp", "Digest", "Kerberos", "Negotiate" e "NegotiateWithImplicitCredential". Il valore predefinito è "Default".

L'autenticazione CredSSP è disponibile unicamente in Windows Vista, Windows Server 2008 e versioni successive di Windows.

Per ulteriori informazioni sui valori di questo parametro, vedere la descrizione dell'enumerazione System.Management.Automation.Runspaces.AuthenticationMechanism in MSDN Library all'indirizzo https://go.microsoft.com/fwlink/?LinkId=144382 (le informazioni potrebbero essere in lingua inglese).

Attenzione: l'autenticazione CredSSP (Credential Security Service Provider), che prevede il passaggio delle credenziali dell'utente a un computer remoto per l'autenticazione, è progettata per i comandi che richiedono l'autenticazione su più di una risorsa, ad esempio l'accesso a una condivisione di rete remota. Questo meccanismo aumenta il rischio per la sicurezza dell'operazione remota. Se il computer remoto è compromesso, è possibile utilizzare le credenziali passate a tale computer per controllare la sessione di rete.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Default

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-CertificateThumbprint <string>

Specifica il certificato di chiave pubblica digitale (X509) di un account utente con autorizzazione per l'esecuzione di questa azione. Immettere l'identificazione digitale del certificato.

I certificati vengono utilizzati nell'autenticazione basata su certificati client. Possono essere mappati solo agli account utente locali; non funzionano con gli account di dominio.

Per ottenere un'identificazione digitale del certificato, utilizzare il comando Get-Item o Get-ChildItem nell'unità Cert: di Windows PowerShell.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-ComputerName <string[]>

Crea una connessione permanente (PSSession) al computer specificato. Se si immettono più nomi di computer, New-PSSession crea più sessioni PSSession, una per ogni computer. Il valore predefinito è il computer locale.

Digitare il nome NetBIOS, un indirizzo IP o un nome di dominio completo di uno o più computer remoti. Per specificare il computer locale, digitare il nome del computer, "localhost" o un punto (.). Quando il computer fa parte di un dominio diverso da quello dell'utente, è obbligatorio utilizzare il nome di dominio completo. È inoltre possibile reindirizzare un nome di computer (tra virgolette) a New-PSSession.

Per utilizzare un indirizzo IP nel valore del parametro ComputerName, il comando deve includere il parametro Credential. È inoltre necessario configurare il computer per il trasporto HTTPS o includere l'indirizzo IP del computer remoto nell'elenco di host attendibili (TrustedHosts) di Gestione remota Windows nel computer locale. Per istruzioni relative all'aggiunta di un nome di computer all'elenco degli host attendibili (TrustedHosts), vedere "Come aggiungere un computer all'elenco di host attendibili" in about_Remote_Troubleshooting.

Nota: in Windows Vista e nelle versioni successive di Windows per includere il computer locale nel valore del parametro ComputerName, è necessario avviare Windows PowerShell con l'opzione "Esegui come amministratore".

Obbligatorio?

false

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByValue, ByPropertyName)

Accettare caratteri jolly?

false

-ConfigurationName <string>

Specifica la configurazione di sessione utilizzata per la nuova sessione PSSession.

Immettere un nome di configurazione o l'URI di risorsa completo per una configurazione di sessione. Se si specifica unicamente il nome di configurazione, viene anteposto l'URI di schema seguente: https://schemas.microsoft.com/powershell.

La configurazione di sessione per una sessione si trova nel computer remoto. Se la configurazione di sessione specificata non esiste nel computer remoto, il comando ha esito negativo.

Il valore predefinito è il valore della variabile di preferenza $PSSessionConfigurationName nel computer locale. Se questa variabile di preferenza non è impostata, l'impostazione predefinita è Microsoft.PowerShell. Per ulteriori informazioni, vedere about_Preference_Variables.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-ConnectionURI <Uri[]>

Specifica un URI (Uniform Resource Identifier) che definisce l'endpoint della connessione. L'URI deve essere completo.

Il formato di questa stringa è il seguente:

<Trasporto>://<NomeComputer>:<Porta>/<NomeApplicazione>

Il valore predefinito è il seguente:

http://localhost:80/WSMAN

I valori validi per il segmento Transport dell'URI sono HTTP e HTTPS. Se non si specifica ConnectionURI, è possibile utilizzare i parametri UseSSL, ComputerName, Port e ApplicationName per specificare i valori URI.

Se il computer di destinazione reindirizza la connessione a un URI diverso, in Windows PowerShell viene impedito il reindirizzamento a meno che non si utilizzi il parametro AllowRedirection nel comando.

Obbligatorio?

true

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-Credential <PSCredential>

Specifica un account utente con autorizzazione per l'esecuzione di questa azione. Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio "Utente01", "Dominio01\Utente01" o "Utente@Dominio.com", oppure immettere un oggetto PSCredential, ad esempio uno restituito dal cmdlet Get-Credential.

Quando si digita un nome utente, viene richiesta una password.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-Name <string[]>

Specifica un nome descrittivo per la sessione PSSession.

È possibile utilizzare il nome per fare riferimento alla sessione PSSession in caso di utilizzo di altri cmdlet, ad esempio Get-PSSession e Enter-PSSession. Non è obbligatorio che il nome sia univoco nel computer o nella sessione corrente.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Port <int>

Specifica la porta di rete nel computer remoto utilizzata per questo comando. Il valore predefinito è la porta 80 (porta HTTP).

Prima di utilizzare una porta alternativa, è necessario configurare il listener WinRM nel computer remoto affinché resti in ascolto su tale porta. Utilizzare i comandi seguenti per configurare il listener:

1. winrm delete winrm/config/listener?Address=*+Transport=HTTP

2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port=&quot;&lt;numero-porta&gt;&quot;}

Non utilizzare il parametro Port a meno che non sia necessario. L'impostazione della porta nel comando si applica a tutti i computer e a tutte le sessioni in cui viene eseguito il comando. Un'impostazione di porta alternativa potrebbe impedire l'esecuzione del comando in tutti i computer.

Obbligatorio?

false

Posizione?

named

Valore predefinito

80

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Session <PSSession[]>

Utilizza la sessione PSSession specificata come modello per la nuova sessione PSSession. Questo parametro consente di creare nuove sessioni PSSession con le stesse proprietà delle sessioni PSSession specificate.

Immettere una variabile che contiene le sessioni PSSession o un comando che consente di creare o ottenere tali sessioni, ad esempio New-PSSession o Get-PSSession.

Le sessioni PSSession risultanti hanno lo stesso nome di computer, nome di applicazione, URI di connessione, porta, nome di configurazione, limite di velocità, timeout e valore SSL di quelle originali, ma presentano un nome descrittivo, un ID e un ID istanza (GUID) diversi.

Obbligatorio?

false

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByValue, ByPropertyName)

Accettare caratteri jolly?

false

-SessionOption <PSSessionOption>

Imposta opzioni avanzate per la sessione. Immettere un oggetto SessionOption creato utilizzando il cmdlet New-PSSessionOption.

I valori predefiniti delle opzioni sono determinati dal valore della variabile di preferenza $PSSessionOption, se impostato. In caso contrario nella sessione vengono utilizzate le impostazioni predefinite del sistema.

Per una descrizione delle opzioni di sessione, inclusi i valori predefiniti, vedere New-PSSessionOption. Per informazioni sulla variabile di preferenza $PSSessionOption, vedere about_Preference_Variables.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-ThrottleLimit <int>

Specifica il numero massimo di connessioni simultanee che è possibile stabilire per eseguire questo comando. Se si omette questo parametro o si immette un valore pari a 0 (zero), viene utilizzato il valore predefinito 32.

Il limite di velocità si applica solo al comando corrente, non alla sessione o al computer.

Obbligatorio?

false

Posizione?

named

Valore predefinito

32

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-UseSSL

Utilizza il protocollo SSL (Secure Sockets Layer) per stabilire una connessione al computer remoto. Per impostazione predefinita, SSL non viene utilizzato.

WS-Management consente di crittografare tutto il contenuto di Windows PowerShell trasmesso in rete. UseSSL consente di inviare i dati con una protezione aggiuntiva mediante una connessione HTTPS anziché HTTP.

Se si utilizza questo parametro, ma SSL non è disponibile sulla porta utilizzata per il comando, il comando ha esito negativo.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.String, System.URI, System.Management.Automation.Runspaces.PSSession

È possibile reindirizzare un oggetto ComputerName (stringa), ConnectionURI (URI) o Session (PSSession) a New-PSSession.

Output

System.Management.Automation.Runspaces.PSSession

Note

Questo cmdlet utilizza l'infrastruttura remota di Windows PowerShell. Per utilizzare questo cmdlet, il computer locale e qualsiasi computer remoto devono essere configurati per la comunicazione remota di Windows PowerShell. Per ulteriori informazioni, vedere about_Remote_Requirements.

In Windows Vista e nelle versioni successive di Windows per creare una sessione PSSession nel computer locale, è necessario avviare Windows PowerShell con l'opzione "Esegui come amministratore".

Al termine delle operazioni nella sessione PSSession, utilizzare il cmdlet Remove-PSSession per eliminare la sessione e rilasciare le risorse.

Esempio 1

C:\PS>$s = new-pssession

Descrizione
-----------
Questo comando crea una nuova sessione PSSession nel computer locale e la salva nella variabile $s.

Ora è possibile utilizzare questa sessione PSSession per eseguire comandi nel computer locale.






Esempio 2

C:\PS>$Server01 = new-pssession -ComputerName Server01

Descrizione
-----------
Questo comando crea una nuova sessione PSSession nel computer Server01 e la salva nella variabile $Server01. 

Quando si creano più sessioni PSSession, assegnarle alle variabili con nomi descrittivi, al fine di gestirle meglio nei comandi successivi.






Esempio 3

C:\PS>$s1, $s2, $s3 = new-session -computername server1,server2,server3

Descrizione
-----------
Questo comando crea tre nuove sessioni PSSession, una in ogni computer specificato dal parametro ComputerName. 

Viene utilizzato l'operatore di assegnazione (=) per assegnare le nuove sessioni PSSession a una matrice di variabili: $s1, $s2, $s3. PSSession Server01 viene assegnata a $s1, PSSession Server02 viene assegnata a $s2 e PSSession Server03 viene assegnata a $s3.

Quando si assegnano più oggetti a una matrice di variabili, in Windows PowerShell ciascun oggetto viene assegnato a una variabile nella matrice. Se sono presenti più oggetti che variabili, tutti gli oggetti rimanenti vengono assegnati all'ultima variabile. Se sono presenti più variabili che oggetti, le variabili rimanenti sono vuote (null).






Esempio 4

C:\PS>new-pssession -computername Server01 -port 8081 -useSSL -ConfigurationName E12

Descrizione
-----------
Questo comando crea una nuova sessione PSSession nel computer Server01 che si connette alla porta 8081 del server e utilizza il protocollo SSL. Nella nuova sessione PSSession viene utilizzata una configurazione di sessione alternativa denominata "E12".

Prima di impostare la porta, è necessario configurare il listener WinRM nel computer remoto affinché resti in ascolto sulla porta 8081. Per ulteriori informazioni, vedere la descrizione del parametro Port.






Esempio 5

C:\PS>new-pssession -session $s -credential domain01\user01

Descrizione
-----------
Questo comando crea una nuova sessione PSSession con le stesse proprietà di una sessione PSSession esistente. È possibile utilizzare questo formato di comando quando le risorse di una sessione PSSession esistente sono esaurite ed è necessaria una nuova sessione PSSession per scaricare alcune richieste.

Viene utilizzato il parametro Session di New-PSSession per specificare la sessione PSSession salvata nella variabile $s. Vengono utilizzate le credenziali dell'utente Domain1\Admin01 per completare il comando.






Esempio 6

C:\PS>$global:s = new-pssession -computername server1.domain44.corpnet.fabrikam.com -credential domain01\admin01

Descrizione
-----------
In questo esempio viene illustrato come creare una sessione PSSession con un ambito globale in un computer che fa parte di un dominio diverso.

Per impostazione predefinita, le sessioni PSSession create nella riga di comando vengono create con ambito locale, mentre le sessioni PSSession create in uno script dispongono dell'ambito dello script. 

Per creare una sessione PSSession con ambito globale, creare una nuova sessione PSSession, quindi archiviarla in una variabile di cui viene eseguito il cast a un ambito globale. In questo caso, il cast della variabile $s viene eseguito a un ambito globale.

Viene utilizzato il parametro ComputerName per specificare il computer remoto. Poiché il computer fa parte di un dominio diverso rispetto all'account utente, il nome completo del computer viene specificato insieme alle credenziali dell'utente.






Esempio 7

C:\PS>$rs = get-content c:\test\servers.txt | new-PSsession -throttleLimit 50

Descrizione
-----------
Questo comando crea una sessione PSSession in ognuno dei 200 computer elencati nel file Servers.txt e archivia la sessione PSSession risultante nella variabile di $rs. Le sessioni PSSession dispongono di un limite di velocità di 50.

È possibile utilizzare questo formato di comando quando i nomi di computer vengono archiviati in un database, un foglio di calcolo, un file di testo o un altro formato convertibile in testo.






Esempio 8

C:\PS>$s = new-PSSession -URI http://Server01:91/NewSession -credential domain01\user01

Descrizione
-----------
Questo comando crea una sessione PSSession nel computer Server01 e la archivia nella variabile $s. Viene utilizzato il parametro URI per specificare il protocollo di trasporto, il computer remoto, la porta e una configurazione di sessione alternativa. Viene inoltre utilizzato il parametro Credential per specificare un account utente con autorizzazione per la creazione di una sessione nel computer remoto.






Esempio 9

C:\PS>$s = new-PSSession -computername (import-csv servers.csv) -credential domain01\admin01 -throttlelimit 16

C:\PS> invoke-command -session $s -scriptblock {get-process powershell} -AsJob

Descrizione
-----------
Questi comandi creano un gruppo di sessioni PSSession, quindi eseguono un processo in background in ognuna delle sessioni PSSession. 

Il primo comando crea una nuova sessione PSSession in ognuno dei computer elencati nel file Servers.csv. Viene utilizzato il cmdlet New-PSSession per creare la sessione PSSession. Il valore del parametro ComputerName è un comando che utilizza il cmdlet Import-Csv per importare il file Servers.csv e leggerne il contenuto. 

Viene utilizzato il parametro Credential per creare le sessioni PSSession con l'autorizzazione di un amministratore di dominio e il parametro ThrottleLimit per limitare il comando a 16 connessioni simultanee. Le sessioni PSSession vengono salvate nella variabile $s.
   
Il secondo comando utilizza il parametro AsJob di Invoke-Command per avviare un processo in background in cui viene eseguito un comando "Get-Process PowerShell" in ognuna delle sessioni PSSession di $s. 

Per ulteriori informazioni sui processi in background, vedere about_Jobs e about_Remote_Jobs.






Esempio 10

C:\PS>new-PSSession -ConnectionURI https://management.exchangelabs.com/Management

Descrizione
-----------
Questo comando crea una nuova sessione PSSession che si connette a un computer specificato da un URI anziché da un nome di computer.






Esempio 11

C:\PS>$so = New-WSManSessionOption -SkipCACheck

PS C:\> new-pssession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -credential server01\admin01

Descrizione
-----------
In questo esempio viene illustrato come creare e utilizzare un parametro SessionOption. 

Il primo comando utilizza il cmdlet New-WSManSessionOption per creare un'opzione di sessione. L'oggetto SessionOption risultante viene salvato nel parametro $so.

Nel secondo comando l'opzione viene utilizzata in una nuova sessione. Viene utilizzato il cmdlet New-PSSession per creare una nuova sessione. Il valore del parametro SessionOption è l'oggetto SessionOption presente nella variabile $so.






Vedere anche




Argomenti della Guida