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
   -UseWindowsPowerShell
   [-Name <string[]>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-Port <Int32>]
   [-HostName] <String[]>
   [-UserName <String>]
   [-KeyFilePath <String>]
   [-SSHTransport]
   [-Subsystem <String>]
   [-ConnectingTimeout <int>]
   [<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 permanente al computer remoto.

Usare una sessione 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 la sessione 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 una sessione 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 quindi viene chiusa.

A partire da PowerShell 6.0 è possibile usare Secure Shell (SSH) per stabilire una connessione 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 su più piattaforme (Windows, Linux, macOS). Per le sessioni basate su SSH si usa il parametro HostName o SSH Connessione ion 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 Comunicazione remota di PowerShell su 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 PSSessionOption che include i valori SkipCACheck e SkipCNCheck impostati su $true per stabilire correttamente la connessione. Eseguire questa operazione solo se si è in un ambiente in cui è possibile essere certi del certificato del server e della connessione di rete al sistema di destinazione.

Esempio

Esempio 1: Creare una sessione nel computer locale

$s = New-PSSession

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

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

Esempio 2: Creare 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. In questo modo sarà possibile gestire gli oggetti PSSession nei comandi successivi.

Esempio 3: Creare sessioni 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 la sessione PSSession server01 a $s1, la sessione PSSession di Server02 a $s2e la sessione PSSession Server03 a $s3.

Quando si assegnano più oggetti a una serie di variabili, PowerShell assegna ogni oggetto rispettivamente 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: Creare 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. La nuova sessione 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: Creare 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 una sessione PSSession esistente. È possibile usare questo formato di comando quando le risorse di una sessione PSSession esistente sono esaurite e una nuova sessione PSSession è necessaria per eseguire l'offload di alcune delle richieste.

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

Esempio 6: Creare 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 ambito locale e gli oggetti PSSession creati in uno script hanno ambito di script.

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

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

Esempio 7: Creare sessioni 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: Creare 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 con l'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 ogni computer elencato 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: Creare una sessione per un computer usando il relativo URI

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

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

Esempio 11: Creare 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 di 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: Creare una sessione con SSH

New-PSSession -HostName UserA@LinuxServer01

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

Esempio 13: Creare 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

Questo esempio illustra come creare una sessione PSSession usando Secure Shell (SSH). Usa il parametro Port 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: Creare più sessioni con 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

Questo esempio illustra come creare più sessioni usando Secure Shell (SSH) e il set di parametri SSH Connessione ion. Il parametro SSH Connessione ion 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 abbiano SSH configurato per supportare l'autenticazione utente basata su chiave.

Parametri

-AllowRedirection

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

Quando si usa il parametro Connessione ionURI, 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 dell'opzione di sessione Maximum Connessione ionRedirectionCount. Utilizzare il parametro MaximumRedirection del New-PSSessionOption cmdlet o impostare la proprietà Maximum Connessione ionRedirectionCount 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 Connessione ionURI nel comando .

Il valore predefinito è il valore della variabile di $PSSessionApplicationName 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 AuthenticationMechanism Enumeration.

Attenzione

L'autenticazione credSSP (Credential Security Support Provider), in cui le credenziali utente vengono passate a un computer remoto da autenticare, è progettato 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 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 permanente (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 tramite pipe un nome 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 sull'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 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 solo il nome di configurazione, viene anteporto l'URI dello schema seguente: 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 variabile di $PSSessionConfigurationName 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 consentita 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 Connessione URI, è possibile utilizzare i parametri UseSSL, ComputerName, Port e ApplicationName per specificare i valori Connessione ionURI.

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 autorizzato a 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 di sessione ad altri computer.

Per proteggere il computer da accessi dannosi, è possibile riconnettere le sessioni di loopback disconnesse con token interattivi, ovvero quelle create tramite il parametro EnableNetworkAccess , solo dal computer in cui è stata creata la sessione. Le sessioni disconnesse che usano l'autenticazione CredSSP possono essere riconnesse da altri computer. Per ulteriori 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 Secure Shell (SSH). Questo è simile al parametro ComputerName , ad eccezione del fatto che la connessione al computer remoto viene effettuata tramite 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 del file di chiave usato da Secure Shell (SSH) per autenticare un utente in un computer remoto.

SSH consente di eseguire l'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 fornire 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 la sessione 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

-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 l'ascolto su 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 a meno che non sia 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 la sessione PSSession viene eseguita 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 utilizzati 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 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, un ID e un ID istanza (GUID) diversi.

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 opzioni di sessione e i valori sono valori di opzione di sessione.

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

I valori delle opzioni di 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 SSH Connessione ion è utile per creare 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 tramite Secure Shell (SSH).

Per impostazione predefinita, PowerShell usa Windows WinRM per connettersi a un computer remoto. Questa opzione forza PowerShell a 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.

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 per l'account usato per creare una sessione nel computer remoto. Il metodo di autenticazione utente dipende dalla configurazione di Secure Shell (SSH) nel computer remoto.

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

Se SSH è configurato per l'autenticazione utente basata su chiave, è possibile specificare un percorso del file di chiave tramite il parametro KeyFilePath e non verrà richiesta 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 viene eseguita automaticamente in base al nome utente. Per altre informazioni, vedere la documentazione SSH sull'autenticazione utente basata su chiave.

Non si tratta di un parametro obbligatorio. Se non viene specificato alcun parametro UserName , viene usato il nome utente di accesso 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 utilizzato.

WS-Management crittografa tutto il contenuto di PowerShell trasmesso in rete. Il parametro UseSSL offre una protezione aggiuntiva che invia i dati attraverso 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 un nuovo spazio di esecuzione di Windows PowerShell nel sistema locale.

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

-VMId

Specifica un array 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 inviare tramite pipe una stringa a questo cmdlet.

System.URI

È possibile inviare tramite pipe un URI a questo cmdlet.

PSSession

È possibile inviare tramite pipe 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, è necessario configurare il computer locale e tutti i computer remoti 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 rilasciarne le risorse.

  • I set di parametri HostName e SSH Connessione ion sono stati inclusi a partire da PowerShell 6.0. Sono stati aggiunti per fornire la comunicazione remota di PowerShell basata su Secure Shell (SSH). SSH e PowerShell sono supportati in più piattaforme (Windows, Linux, macOS) e la comunicazione remota di PowerShell funzionano su queste piattaforme in cui PowerShell e SSH sono installati e configurati. Questo comportamento è separato dalla comunicazione remota di sola 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 Comunicazione remota di PowerShell su 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 del 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>

Per altre informazioni sui file, vedere ssh_config(5).For more information about ssh_config files, see ssh_config(5).