about_Remote_Variables

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Remote_Variables

DESCRIZIONE BREVE

Illustra come usare le variabili locali e remote nei comandi remoti.

DESCRIZIONE LUNGA

È possibile usare le variabili nei comandi eseguiti in computer remoti. È sufficiente assegnare un valore alla variabile e usare tale variabile al posto del valore.

Per impostazione predefinita, le variabili dei comandi remoti dovrebbero essere definite nella sessione in cui viene eseguito il comando. È possibile usare le variabili definite nella sessione locale, ma è necessario identificarle come variabili locali nel comando.

USO DELLE VARIABILI REMOTE

Windows PowerShell® presuppone che le variabili usate nei comandi remoti vengano definite nella sessione in cui viene eseguito il comando.

Nell'esempio seguente, la variabile $ps viene definita nella sessione temporanea nella quale viene eseguito il comando Get-WinEvent.

        PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"; Get-WinEvent -LogName $ps}

In modo analogo, quando il comando viene eseguito in una sessione permanente (PSSession), la variabile remota deve essere definita nella stessa sessione PSSession.

        PS C:\>$s = New-PSSession -ComputerName S1

        PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"}

        PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $ps}

USO DI VARIABILI LOCALI

È possibile usare le variabili locali in comandi remoti, ma è necessario indicare che la variabile è definita nella sessione locale.

A partire da Windows PowerShell 3.0, è possibile usare il modificatore di ambito Using per identificare una variabile locale in un comando remoto.

La sintassi di Using è la seguente:

       The syntax is:
           $Using:<VariableName>       

Nell'esempio seguente, la variabile $ps viene creata nella sessione locale, ma viene usata nella sessione in cui viene eseguito il comando. Il modificatore di ambito Using identifica $ps come variabile locale. Inserire il corpo della sezione qui.

        PS C:\>$ps = "Windows PowerShell"
        PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {Get-WinEvent -LogName $Using:ps}

È anche possibile usare il modificatore di ambito Using in Pssession.

        PS C:\>$s = New-PSSession -ComputerName S1

        PS C:\>$ps = "Windows PowerShell"

        PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $Using:ps}

USO DI VARIABILI LOCALI IN WINDOWS POWERSHELL 2.0

È possibile usare le variabili locali in un comando remoto definendo i parametri relativi al comando remoto e usando il parametro ArgumentList o il cmdlet Invoke-Command per specificare la variabile locale come valore del parametro.

Il formato del comando è valido in Windows PowerShell 2.0 e nelle versioni successive di Windows PowerShell.

  1. -- Usare la parola chiave param per definire i parametri del comando remoto. I nomi dei parametri sono segnaposti che non devono corrispondere al nome della variabile locale.

  2. -- Usare i parametri definiti dalla parola chiave param nel comando.

  3. -- Usare il parametro ArgumentList del cmdlet Invoke-Command per specificare la variabile locale come valore del parametro.

Ad esempio, i comandi seguenti definiscono la variabile $ps nella sessione locale e la usano in un comando remoto. Il comando usa $log come nome del parametro e la variabile locale $ps come valore.

      C:\PS>$ps = "Windows PowerShell"

      C:\PS>Invoke-Command -ComputerName S1 -ScriptBlock {param($log) Get-WinEvent -logname $log} -ArgumentList $ps

PAROLE CHIAVE

about_Using

VEDERE ANCHE

about_Remote

about_PSSessions

about_Scopes

Enter-PSSession

Invoke-Command

New-PSSession