about_Remote_Variables

Se aplica a: Windows PowerShell 4.0

TEMA

about_Remote_Variables

DESCRIPCIÓN BREVE

Explica cómo utilizar las variables locales y remotas en comandos remotos.

DESCRIPCIÓN LARGA

Puede usar variables en los comandos que ejecute en equipos remotos. Simplemente asigne un valor a la variable y, a continuación, use la variable en lugar del valor.

De forma predeterminada, se supone que las variables de los comandos remotos se definen en la sesión en la que se ejecuta el comando. También puede usar variables definidas en la sesión local, pero debe identificarlas como variables locales en el comando.

USO DE VARIABLES REMOTAS

Windows PowerShell® supone que las variables que se usan en los comandos remotos se definen en la sesión en la que se ejecuta el comando.

En el ejemplo siguiente, la variable $ps se define en la sesión temporal en la que se ejecuta el comando Get-WinEvent.

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

De forma similar, cuando el comando se ejecuta en una sesión persistente (PSSession), la variable remota debe definirse en la misma 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 DE VARIABLES LOCALES

También puede usar las variables locales en comandos remotos, pero debe indicar que la variable se define en la sesión local.

A partir de Windows PowerShell 3.0, puede usar el modificador de ámbito Using para identificar una variable local en un comando remoto.

La sintaxis de Using es la siguiente:

       The syntax is:
           $Using:<VariableName>       

En el ejemplo siguiente, la variable $ps se crea en la sesión local, pero se usa en la sesión en la que se ejecuta el comando. El modificador de ámbito Using identifica $ps como una variable local. Insertar aquí el cuerpo de la sección.

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

También puede usar el modificador de ámbito Using en PSSessions.

        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 DE VARIABLES LOCALES EN WINDOWS POWERSHELL 2.0

Puede usar variables locales en un comando remoto definiendo parámetros para el comando remoto y usando el parámetro ArgumentList del cmdlet Invoke-Command para especificar la variable local como el valor del parámetro.

Este formato de comando es válido en Windows PowerShell 2.0 y las versiones posteriores de Windows PowerShell.

  1. -- Use la palabra clave param para definir parámetros para el comando remoto. Los nombres de parámetro son marcadores de posición que no es necesario que coincidan con el nombre de la variable local.

  2. -- Use los parámetros definidos mediante la palabra clave param en el comando.

  3. -- Use el parámetro ArgumentList del cmdlet Invoke-Command para especificar la variable local como el valor del parámetro.

Por ejemplo, el comando siguiente define la variable $ps en la sesión local y, a continuación, lo usa en un comando remoto. El comando usa $log como el nombre del parámetro y la variable local, $ps, como su valor.

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

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

PALABRAS CLAVE

about_Using

VEA TAMBIÉN

about_Remote

about_PSSessions

about_Scopes

Enter-PSSession

Invoke-Command

New-PSSession