Condividi tramite


New-PSSession

Crea una connessione permanente a un computer locale o remoto.

Sintassi

New-PSSession
   [[-ComputerName] <String[]>]
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ConfigurationName <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ApplicationName <String>]
   [-ThrottleLimit <Int32>]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ConfigurationName <String>]
   [-ThrottleLimit <Int32>]
   [-ConnectionUri] <Uri[]>
   [-AllowRedirection]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   -Credential <PSCredential>
   [-Name <String[]>]
   [-ConfigurationName <String>]
   [-VMId] <Guid[]>
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   -Credential <PSCredential>
   [-Name <String[]>]
   [-ConfigurationName <String>]
   -VMName <String[]>
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [[-Session] <PSSession[]>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-ConfigurationName <String>]
   -ContainerId <String[]>
   [-RunAsAdministrator]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-UseWindowsPowerShell]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-Port <Int32>]
   [-HostName] <String[]>
   [-UserName <String>]
   [-KeyFilePath <String>]
   [-Subsystem <String>]
   [-ConnectingTimeout <Int32>]
   [-SSHTransport]
   [-Options <Hashtable>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   -SSHConnection <Hashtable[]>
   [<CommonParameters>]

Descrizione

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

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

È possibile eseguire comandi in un computer remoto senza creare un PSSession con i parametri ComputerName di Enter-PSSession o Invoke-Command. Quando si usa il parametro ComputerName , PowerShell crea una connessione temporanea usata per il comando e viene quindi chiusa.

A partire da PowerShell 6.0 è possibile usare Secure Shell (SSH) per stabilire una connessione a e creare una sessione in un computer remoto, se SSH è disponibile nel computer locale e il computer remoto è configurato con un endpoint SSH di PowerShell. Il vantaggio di una sessione remota di PowerShell basata su SSH è che può funzionare tra più piattaforme (Windows, Linux, macOS). Per le sessioni basate su SSH si usa il parametro HostName o SSHConnection impostato per specificare il computer remoto e le informazioni di connessione pertinenti. Per altre informazioni su come configurare la comunicazione remota SSH di PowerShell, vedere PowerShell Remoting Over SSH.

Nota

Quando si usa la comunicazione remota WSMan da un client Linux o macOS con un endpoint HTTPS in cui il certificato del server non è attendibile (ad esempio, un certificato autofirmato). È necessario specificare un'opzione PSSessionOption che include i valori SkipCACheck e SkipCNCheck impostati per $true stabilire correttamente la connessione. A tale scopo, se si è in un ambiente in cui è possibile essere certi del certificato server e della connessione di rete al sistema di destinazione.

Esempio

Esempio 1: Create una sessione nel computer locale

$s = New-PSSession

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

È ora possibile usare questa sessione PSSession per eseguire comandi nel computer locale.

Esempio 2: Create una sessione in un computer remoto

$Server01 = New-PSSession -ComputerName Server01

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

Quando si creano più oggetti PSSession , assegnarli alle variabili con nomi utili. Ciò consente di gestire gli oggetti PSSession nei comandi successivi.

Esempio 3: sessioni di Create in più computer

$s1, $s2, $s3 = New-PSSession -ComputerName Server01,Server02,Server03

Questo comando crea tre oggetti PSSession , uno in ognuno dei computer specificati dal parametro ComputerName .

Il comando usa l'operatore di assegnazione (=) per assegnare i nuovi oggetti PSSession alle variabili: $s1, $s2, $s3. Assegna server01 PSSession a $s1, server02 PSSession su $s2e server03 PSSession su $s3.

Quando si assegnano più oggetti a una serie di variabili, PowerShell assegna rispettivamente ogni oggetto a una variabile nella serie. Se sono presenti più oggetti delle variabili disponibili, tutti gli oggetti rimanenti vengono assegnati all'ultima variabile. Se sono presenti più variabili rispetto agli oggetti, le variabili rimanenti sono vuote ($null).

Esempio 4: Create una sessione con una porta specificata

New-PSSession -ComputerName Server01 -Port 8081 -UseSSL -ConfigurationName E12

Questo comando crea una nuova sessione PSSession nel computer Server01 che si connette alla porta 8081 server e usa il protocollo SSL. Il nuovo PSSession usa una configurazione di sessione alternativa denominata E12.

Prima di impostare la porta, è necessario configurare il listener di Gestione remota Windows nel computer remoto per l'ascolto sulla porta 8081. Per altre informazioni, vedere la descrizione del parametro Port .

Esempio 5: Create una sessione in base a una sessione esistente

New-PSSession -Session $s -Credential Domain01\User01

Questo comando crea una sessione PSSession con le stesse proprietà di un PSSession esistente. È possibile usare questo formato di comando quando le risorse di un PSSession esistente vengono esaurite e è necessario un nuovo PSSession per scaricare alcune delle richieste.

Il comando usa il parametro Session di per New-PSSession specificare la sessione salvata nella $s variabile. Usa le credenziali dell'utente Domain1\Admin01 per completare il comando.

Esempio 6: Create una sessione con un ambito globale in un dominio diverso

$global:s = New-PSSession -ComputerName Server1.Domain44.Corpnet.Fabrikam.com -Credential Domain01\Admin01

In questo esempio viene illustrato come creare una sessione PSSession con un ambito globale in un computer in un dominio diverso.

Per impostazione predefinita, gli oggetti PSSession creati nella riga di comando vengono creati con oggetti PSSession e ambito locale creati in uno script hanno ambito script.

Per creare una sessione PSSession con ambito globale, creare una nuova sessione PSSession e quindi archiviare la sessione PSSession in una variabile che viene eseguita il cast in un ambito globale. In questo caso, la $s variabile viene eseguita in un ambito globale.

Il comando usa il parametro ComputerName per specificare il computer remoto. Poiché il computer si trova in un dominio diverso dall'account utente, il nome completo del computer viene specificato insieme alle credenziali dell'utente.

Esempio 7: sessioni di Create per molti computer

$rs = Get-Content C:\Test\Servers.txt | New-PSSession -ThrottleLimit 50

Questo comando crea una sessione PSSession in ognuno dei 200 computer elencati nel Servers.txt file e archivia la sessione PSSession risultante nella $rs variabile. Gli oggetti PSSession hanno un limite di limitazione di 50.

È possibile usare questo formato di comando quando i nomi di computer sono archiviati in un database, un foglio di calcolo, un file di testo o altri formati di testo convertibili.

Esempio 8: Create una sessione usando un URI

$s = New-PSSession -URI http://Server01:91/NewSession -Credential Domain01\User01

Questo comando crea una sessione PSSession nel computer Server01 e la archivia nella $s variabile. Usa il parametro URI per specificare il protocollo di trasporto, il computer remoto, la porta e una configurazione di sessione alternativa. Usa anche il parametro Credential per specificare un account utente che dispone dell'autorizzazione per creare una sessione nel computer remoto.

Esempio 9: Eseguire un processo in background in un set di sessioni

$s = New-PSSession -ComputerName (Get-Content Servers.txt) -Credential Domain01\Admin01 -ThrottleLimit 16
Invoke-Command -Session $s -ScriptBlock {Get-Process PowerShell} -AsJob

Questi comandi creano un set di oggetti PSSession e quindi eseguono un processo in background in ognuno degli oggetti PSSession .

Il primo comando crea una nuova sessione PSSession in ognuno dei computer elencati nel Servers.txt file. Usa il New-PSSession cmdlet per creare la sessione PSSession. Il valore del parametro ComputerName è un comando che usa il Get-Content cmdlet per ottenere l'elenco dei nomi computer del Servers.txt file.

Il comando usa il parametro Credential per creare gli oggetti PSSession che dispongono dell'autorizzazione di un amministratore di dominio e usa il parametro ThrottleLimit per limitare il comando alle 16 connessioni simultanee. Il comando salva gli oggetti PSSession nella $s variabile.

Il secondo comando usa il parametro AsJob del Invoke-Command cmdlet per avviare un processo in background che esegue un Get-Process PowerShell comando in ognuno degli oggetti PSSession in $s.

Per altre informazioni sui processi in background di PowerShell, vedere about_Jobs e about_Remote_Jobs.

Esempio 10: Create una sessione per un computer usando il relativo URI

New-PSSession -ConnectionURI https://management.exchangelabs.com/Management

Questo comando crea oggetti PSSession che si connette a un computer specificato da un URI anziché da un nome computer.

Esempio 11: Create un'opzione di sessione

$so = New-PSSessionOption -SkipCACheck
New-PSSession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -Credential Server01\Admin01

In questo esempio viene illustrato come creare un oggetto opzione sessione e usare il parametro SessionOption .

Il primo comando usa il New-PSSessionOption cmdlet per creare un'opzione di sessione. Salva l'oggetto SessionOption risultante nella $so variabile.

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

Esempio 12: Create una sessione usando SSH

New-PSSession -HostName UserA@LinuxServer01

In questo esempio viene illustrato come creare una nuova sessione PSSession usando Secure Shell (SSH). Se SSH è configurato nel computer remoto per richiedere password, si otterrà una richiesta di password. In caso contrario, è necessario usare l'autenticazione utente basata su chiave SSH.

Esempio 13: Create una sessione usando SSH e specificare la porta e la chiave di autenticazione utente

New-PSSession -HostName UserA@LinuxServer01:22 -KeyFilePath c:\<path>\userAKey_rsa

In questo esempio viene illustrato come creare una sessione PSSession usando Secure Shell (SSH). Usa il parametro Porta per specificare la porta da usare e il parametro KeyFilePath per specificare una chiave RSA usata per identificare e autenticare l'utente nel computer remoto.

Esempio 14: Create più sessioni usando SSH

$sshConnections = @(
    @{
          HostName    = 'WinServer1'
          UserName    = 'domain\userA'
          KeyFilePath = 'c:\users\UserA\id_rsa'
    }
    @{
        HostName    = 'UserB@LinuxServer5'
        KeyFilePath = 'c:\UserB\<path>\id_rsa'
    }
)
New-PSSession -SSHConnection $sshConnections

In questo esempio viene illustrato come creare più sessioni usando Secure Shell (SSH) e il set di parametri SSHConnection . Il parametro SSHConnection accetta una matrice di tabelle hash che contengono informazioni di connessione per ogni sessione. Si noti che questo esempio richiede che i computer remoti di destinazione dispongano di SSH configurati per supportare l'autenticazione utente basata su chiavi.

Esempio 15: Create una nuova sessione usando le opzioni SSH

$options = @{
    Port=22
    User = 'UserB'
    Host = 'LinuxServer5'
}
New-PSSession -KeyFilePath '/Users/UserB/id_rsa' -Options $options

In questo esempio viene illustrato come creare una nuova sessione basata su SSH un computer basato su Linux remoto usando le opzioni SSH. Il parametro Options accetta una tabella hash di valori passati come opzioni al comando sottostante ssh la connessione stabilita al sistema remoto.

Parametri

-AllowRedirection

Indica che questo cmdlet consente il reindirizzamento di questa connessione a un URI (Uniform Resource Identifier) alternativo.

Quando si usa il parametro ConnectionURI, la destinazione remota può restituire un'istruzione per il reindirizzamento a un URI diverso. Per impostazione predefinita, PowerShell non reindirizza le connessioni, ma è possibile usare questo parametro per abilitarlo per reindirizzare la connessione.

È anche possibile limitare il numero di reindirizzamenti della connessione modificando il valore di opzione della sessione MaximumConnectionRedirectionCount. Utilizzare il parametro MaximumRedirection del New-PSSessionOption cmdlet o impostare la proprietà MaximumConnectionRedirectionCount della variabile di preferenza $PSSessionOption . Il valore predefinito è 5.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

Specifica il segmento dell'URI di connessione corrispondente al nome dell'applicazione. Usare questo parametro per specificare il nome dell'applicazione quando non si usa il parametro ConnectionURI nel comando.

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

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

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Authentication

Specifica il meccanismo usato per autenticare le credenziali dell'utente. I valori validi per questo parametro sono:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Il valore predefinito è Default.

Per altre informazioni sui valori di questo parametro, vedere Enumerazione AuthenticationMechanism.

Attenzione

L'autenticazione del provider di supporto per la sicurezza delle credenziali (CredSSP), in cui le credenziali utente vengono passate a un computer remoto da autenticare, è progettato per i comandi che richiedono l'autenticazione su più risorse, ad esempio l'accesso a una condivisione di rete remota. Questo meccanismo aumenta il rischio per la sicurezza dell'operazione remota. Se infatti il computer remoto viene compromesso, le credenziali che gli vengono passate possono essere usate per controllare la sessione di rete.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

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

I certificati vengono usati nell'autenticazione basata sui certificati client. Possono essere mappati solo ad account utente locali. Non funzionano con gli account di dominio.

Per ottenere un certificato, usare il Get-Item comando o Get-ChildItem nell'unità di PowerShell Cert: .

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Specifica una matrice di nomi di computer. Questo cmdlet crea una connessione persistente (PSSession) al computer specificato. Se si immettono più nomi di computer, New-PSSession crea più oggetti PSSession , uno 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, localhosto un punto (.). Quando il computer è in un dominio diverso rispetto all'utente, il nome di dominio completo è obbligatorio. È anche possibile inviare un nome di computer, tra virgolette, a New-PSSession.

Per usare un indirizzo IP nel valore del parametro ComputerName , il comando deve includere il parametro Credential . Inoltre, il computer deve essere configurato per il trasporto HTTPS o l'indirizzo IP del computer remoto deve essere incluso nell'elenco TrustedHosts di Gestione remota Windows nel computer locale. Per istruzioni per l'aggiunta di un nome computer all'elenco TrustedHosts, vedere "Come aggiungere un computer all'elenco host attendibile" in about_Remote_Troubleshooting.

Per includere il computer locale nel valore del parametro ComputerName, avviare Windows PowerShell usando l'opzione Esegui come amministratore.

Type:String[]
Aliases:Cn
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ConfigurationName

Specifica la configurazione della sessione usata per la nuova sessione PSSession.

Immettere un nome di configurazione o l'URI di risorsa completo per una configurazione di sessione. Se si specifica solo il nome di configurazione, l'URI dello schema seguente viene prependato: http://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 $PSSessionConfigurationName variabile di preferenza nel computer locale. Se questa variabile di preferenza non è impostata, il valore predefinito è Microsoft.PowerShell. Per altre informazioni, vedere about_Preference_Variables.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ConnectingTimeout

Specifica la quantità di tempo in millisecondi consentiti per il completamento della connessione SSH iniziale. Se la connessione non viene completata entro l'ora specificata, viene restituito un errore.

Questo parametro è stato introdotto in PowerShell 7.2

Type:Int32
Position:Named
Default value:unlimited
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionUri

Specifica un URI che definisce l'endpoint di connessione per la sessione. L'URI deve essere completo. Il formato di questa stringa è il seguente:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

Il valore predefinito è il seguente:

http://localhost:5985/WSMAN

Se non si specifica un parametro ConnectionURI, è possibile usare i parametri UseSSL, ComputerName, Port e ApplicationName per specificare i valori di ConnectionURI.

I valori validi per il segmento Trasporto dell'URI sono HTTP e HTTPS. Se si specifica un URI di connessione con un segmento di trasporto, ma non si specifica una porta, la sessione viene creata con porte standard: 80 per HTTP e 443 per HTTPS. Per usare le porte predefinite per la comunicazione remota di PowerShell, specificare la porta 5985 per HTTP o 5986 per HTTPS.

Se il computer di destinazione reindirizza la connessione a un URI diverso, PowerShell impedisce il reindirizzamento a meno che non si usi il parametro AllowRedirection nel comando.

Type:Uri[]
Aliases:URI, CU
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ContainerId

Specifica una matrice di ID di contenitori. Questo cmdlet avvia una sessione interattiva con ognuno dei contenitori specificati. Usare il docker ps comando per ottenere un elenco di ID contenitore. Per altre informazioni, vedere la Guida per il comando docker ps .

Type:String[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

Specifica un account utente che dispone dell'autorizzazione per eseguire questa azione. Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio User01 o Domain01\User01, oppure immettere un oggetto PSCredential generato dal Get-Credential cmdlet. Se si digita un nome utente, viene richiesto di immettere la password.

Le credenziali vengono archiviate in un oggetto PSCredential e la password viene archiviata come SecureString.

Nota

Per altre informazioni sulla protezione dei dati SecureString , vedere How secure is SecureString?.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-EnableNetworkAccess

Indica che questo cmdlet aggiunge un token di sicurezza interattivo alle sessioni di loopback. Il token interattivo consente di eseguire comandi nella sessione di loopback che ottengono dati da altri computer. Ad esempio, è possibile eseguire un comando nella sessione che copia file XML da un computer remoto al computer locale.

Una sessione di loopback è una sessione PSSession che ha origine e termina nello stesso computer. Per creare una sessione di loopback, omettere il parametro ComputerName o impostarne il valore su dot (.), localhosto il nome del computer locale.

Per impostazione predefinita, questo cmdlet crea sessioni di loopback usando un token di rete, che potrebbe non fornire autorizzazioni sufficienti per l'autenticazione nei computer remoti.

Il parametro EnableNetworkAccess è efficace solo nelle sessioni di loopback. Se si usa EnableNetworkAccess quando si crea una sessione in un computer remoto, il comando ha esito positivo, ma il parametro viene ignorato.

È anche possibile abilitare l'accesso remoto in una sessione di loopback usando il CredSSP valore del parametro Authentication , che delega le credenziali della sessione ad altri computer.

Per proteggere il computer dall'accesso dannoso, le sessioni di loopback disconnesse con token interattivi, che sono quelle create usando il parametro EnableNetworkAccess , possono essere riconnesse solo dal computer in cui è stata creata la sessione. Le sessioni disconnesse che usano l'autenticazione CredSSP possono essere riconnesse da altri computer. Per altre informazioni, vedere Disconnect-PSSession.

Questo parametro è stato introdotto in PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostName

Specifica una matrice di nomi di computer per una connessione basata su SSH (Secure Shell). Questo è simile al parametro ComputerName , ad eccezione del fatto che la connessione al computer remoto viene eseguita usando SSH anziché Windows WinRM.

Questo parametro è stato introdotto in PowerShell 6.0.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-KeyFilePath

Specifica un percorso di file chiave usato da Secure Shell (SSH) per autenticare un utente in un computer remoto.

SSH consente l'esecuzione dell'autenticazione utente tramite chiavi private/pubbliche come alternativa all'autenticazione della password di base. Se il computer remoto è configurato per l'autenticazione della chiave, questo parametro può essere usato per specificare la chiave che identifica l'utente.

Questo parametro è stato introdotto in PowerShell 6.0.

Type:String
Aliases:IdentityFilePath
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Specifica un nome descrittivo per PSSession.

È possibile usare il nome per fare riferimento alla sessione PSSession quando si usano altri cmdlet, ad esempio Get-PSSession e Enter-PSSession. Il nome non deve essere univoco per il computer o la sessione corrente.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Options

Specifica una tabella hash delle opzioni SSH usate per la connessione a una sessione basata su SSH remota. Le opzioni possibili sono i valori supportati dalla versione basata su Unix del comando ssh .

I valori passati in modo esplicito dai parametri hanno la precedenza sui valori passati nella tabella hash Options . Ad esempio, l'uso del parametro Porta esegue l'override di qualsiasi Port coppia chiave-valore passata nella tabella hash Options .

Type:Hashtable
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Port

Specifica la porta di rete nel computer remoto utilizzata per questa connessione. Per connettersi a un computer remoto, è necessario che il computer remoto sia in attesa sulla porta usata dalla connessione. Le porte predefinite sono 5985, ovvero la porta WinRM per HTTP e 5986, ovvero la porta WinRM per HTTPS.

Prima di usare un'altra porta, è necessario configurare il listener WinRM nel computer remoto per ascoltare tale porta. Usare 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="\<port-number\>"}

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

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAsAdministrator

Indica che psSession viene eseguito come amministratore.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Session

Specifica una matrice di oggetti PSSession usati da questo cmdlet come modello per la nuova sessione PSSession. Questo parametro crea nuovi oggetti PSSession con le stesse proprietà degli oggetti PSSession specificati.

Immettere una variabile contenente gli oggetti PSSession o un comando che crea o ottiene gli oggetti PSSession , ad esempio un New-PSSession comando o Get-PSSession .

Gli oggetti PSSession risultanti hanno lo stesso nome del computer, il nome dell'applicazione, l'URI di connessione, la porta, il nome di configurazione, il limite di limitazione e il valore SSL (Secure Sockets Layer) degli originali, ma hanno un nome visualizzato diverso, ID e ID istanza (GUID).

Type:PSSession[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SessionOption

Specifica le opzioni avanzate per la sessione. Immettere un oggetto SessionOption , ad esempio quello creato usando il New-PSSessionOption cmdlet o una tabella hash in cui le chiavi sono nomi di opzione sessione e i valori sono valori di opzione sessione.

I valori predefiniti per le opzioni sono determinati dal valore della $PSSessionOption variabile di preferenza, se impostato. In caso contrario, i valori predefiniti vengono stabiliti dalle opzioni impostate nella configurazione di sessione.

I valori dell'opzione sessione hanno la precedenza sui valori predefiniti per le sessioni impostate nella $PSSessionOption variabile di preferenza e nella configurazione della sessione. Non hanno tuttavia la precedenza sui valori, sulle quote o sui limiti massimi impostati nella configurazione di sessione.

Per una descrizione delle opzioni di sessione che includono i valori predefiniti, vedere New-PSSessionOption. Per informazioni sulla $PSSessionOption variabile di preferenza, vedere about_Preference_Variables. Per altre informazioni sulle configurazioni di sessione, vedere about_Session_Configurations.

Type:PSSessionOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SSHConnection

Questo parametro accetta una matrice di tabelle hash in cui ogni tabella hash contiene uno o più parametri di connessione necessari per stabilire una connessione Secure Shell (SSH) (HostName, Port, UserName, KeyFilePath).

I parametri di connessione hashtable sono gli stessi definiti per il set di parametri SSHHost .

Il parametro SSHConnection è utile per la creazione di più sessioni in cui ogni sessione richiede informazioni di connessione diverse.

Questo parametro è stato introdotto in PowerShell 6.0.

Type:Hashtable[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-SSHTransport

Indica che la connessione remota viene stabilita usando Secure Shell (SSH).

Per impostazione predefinita, PowerShell usa Windows WinRM per connettersi a un computer remoto. Questa opzione impone a PowerShell di usare il set di parametri HostName per stabilire una connessione remota basata su SSH.

Questo parametro è stato introdotto in PowerShell 6.0.

Type:SwitchParameter
Accepted values:true
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Subsystem

Specifica il sottosistema SSH usato per la nuova sessione PSSession.

Questo specifica il sottosistema da usare nella destinazione come definito in sshd_config. Il sottosistema avvia una versione specifica di PowerShell con parametri predefiniti. Se il sottosistema specificato non esiste nel computer remoto, il comando ha esito negativo.

Se questo parametro non viene usato, il valore predefinito è il powershell sottosistema.

Type:String
Position:Named
Default value:powershell
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ThrottleLimit

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

Questo valore limite si applica solo al comando corrente, non alla sessione o al computer.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UserName

Specifica il nome utente dell'account usato per creare una sessione nel computer remoto. Il metodo di autenticazione utente dipende dal modo in cui Secure Shell (SSH) è configurato nel computer remoto.

Se SSH è configurato per l'autenticazione password di base, verrà richiesto di specificare la password utente.

Se SSH è configurato per l'autenticazione utente basata su chiave, è possibile specificare un percorso di file chiave tramite il parametro KeyFilePath e non verrà richiesto di richiedere una password. Si noti che se il file di chiave utente client si trova in un percorso noto SSH, il parametro KeyFilePath non è necessario per l'autenticazione basata su chiave e l'autenticazione utente si verifica automaticamente in base al nome utente. Per altre informazioni, vedere la documentazione SSH sull'autenticazione utente basata su chiavi.

Non è un parametro obbligatorio. Se non viene specificato alcun parametro UserName , viene usato il nome utente corrente per la connessione.

Questo parametro è stato introdotto in PowerShell 6.0.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseSSL

Indica che questo cmdlet usa il protocollo SSL per stabilire una connessione al computer remoto. Per impostazione predefinita SSL non viene usato.

WS-Management crittografa tutto il contenuto di PowerShell trasmesso sulla rete. Il parametro UseSSL offre una protezione aggiuntiva che invia i dati in una connessione HTTPS anziché una connessione HTTP.

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

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseWindowsPowerShell

Crea una connessione remota a una nuova Windows PowerShell runspace nel sistema locale.

Type:SwitchParameter
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-VMId

Specifica una matrice di ID macchina virtuale. Questo cmdlet avvia una sessione interattiva di PowerShell Direct con ognuna delle macchine virtuali specificate. Per altre informazioni, vedere Automazione e gestione delle macchine virtuali con PowerShell.

Usare Get-VM per visualizzare le macchine virtuali disponibili nell'host Hyper-V.

Type:Guid[]
Aliases:VMGuid
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VMName

Specifica una matrice di nomi di macchine virtuali. Questo cmdlet avvia una sessione interattiva di PowerShell Direct con ognuna delle macchine virtuali specificate. Per altre informazioni, vedere Automazione e gestione delle macchine virtuali con PowerShell.

Usare Get-VM per visualizzare le macchine virtuali disponibili nell'host Hyper-V.

Type:String[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Input

String

È possibile eseguire la pipe di una stringa a questo cmdlet.

System.URI

È possibile inviare un URI tramite pipe a questo cmdlet.

PSSession

È possibile inviare un oggetto sessione a questo cmdlet.

Output

PSSession

Note

PowerShell include gli alias seguenti per New-PSSession:

  • Tutte le piattaforme:

    • nsn
  • Questo cmdlet usa l'infrastruttura remota di PowerShell. Per usare questo cmdlet, il computer locale e tutti i computer remoti devono essere configurati per la comunicazione remota di PowerShell. Per altre informazioni, vedere about_Remote_Requirements.

  • Per creare una sessione PSSession nel computer locale, avviare PowerShell con l'opzione Esegui come amministratore .

  • Al termine della sessione PSSession, usare il Remove-PSSession cmdlet per eliminare la sessione PSSession e rilasciare le relative risorse.

  • I set di parametri HostName e SSHConnection sono stati inclusi a partire da PowerShell 6.0. Sono stati aggiunti per fornire la comunicazione remota di PowerShell basata su Secure Shell (SSH). Sia SSH che PowerShell sono supportati in più piattaforme (Windows, Linux, macOS) e La comunicazione remota di PowerShell funzionerà su queste piattaforme in cui PowerShell e SSH sono installati e configurati. Questa operazione è separata dalla comunicazione remota windows precedente basata su WinRM e molte delle funzionalità e limitazioni specifiche di WinRM non si applicano. Ad esempio, le quote basate su WinRM, le opzioni di sessione, la configurazione dell'endpoint personalizzata e le funzionalità di disconnessione/riconnessione non sono supportate. Per altre informazioni su come configurare la comunicazione remota SSH di PowerShell, vedere PowerShell Remoting Over SSH.

L'eseguibile ssh ottiene i dati di configurazione dalle origini seguenti nell'ordine seguente:

  1. Opzioni della riga di comando
  2. File di configurazione dell'utente (~/.ssh/config)
  3. file di configurazione a livello di sistema (/etc/ssh/ssh_config)

I parametri dei cmdlet seguenti vengono mappati in ssh parametri e opzioni:

Parametro del cmdlet parametro ssh opzione ssh -o equivalente
-KeyFilePath -i <KeyFilePath> -o IdentityFile=<KeyFilePath>
-UserName -l <UserName> -o User=<UserName>
-Port -p <Port> -o Port=<Port>
-ComputerName -Subsystem -s <ComputerName> <Subsystem> -o Host=<ComputerName>

I valori passati in modo esplicito dai parametri hanno la precedenza sui valori passati nella tabella hash Options . Per altre informazioni sui ssh_config file, vedere ssh_config(5).