about_Remote_Variables

Aplica-se a: Windows PowerShell 4.0, Windows PowerShell 5.0

TÓPICO

about_Remote_Variables

DESCRIÇÃO BREVE

Explica como usar variáveis locais e remotas em comandos remotos.

DESCRIÇÃO LONGA

Você pode usar variáveis em comandos que são executados em computadores remotos. Basta atribuir um valor à variável e, em seguida, usar a variável no lugar do valor.

Por padrão, as variáveis em comandos remotos devem ser definidas na sessão em que o comando é executado. Você também pode usar as variáveis definidas na sessão local, mas você deve identificá-las como variáveis locais no comando.

USANDO VARIÁVEIS REMOTAS

Windows PowerShell® pressupõe-se que as variáveis usadas em comandos remotos são definidas na sessão em que o comando é executado.

No exemplo a seguir, a variável $ps é definida na sessão temporária na qual o comando Get-WinEvent é executado.

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

Da mesma forma, quando o comando é executado em uma sessão persistente (PSSession), a variável remota deve ser definida na mesma 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}

USANDO VARIÁVEIS LOCAIS

Você também pode usar variáveis locais em comandos remotos, mas deve indicar que a variável é definida na sessão local.

A partir de Windows PowerShell 3.0, você pode usar o modificador de escopo Using para identificar uma variável local em um comando remoto.

A sintaxe de Using é a seguinte:

       The syntax is:
           $Using:<VariableName>       

No exemplo a seguir, a variável $ps é criada na sessão local, mas é usada na sessão em que o comando é executado. O modificador de escopo Using identifica $ps como uma variável local. Insira o corpo da seção aqui.

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

Você também pode usar o modificador de escopo Using em 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}

USANDO VARIÁVEIS LOCAIS NO WINDOWS POWERSHELL 2.0

Você pode usar variáveis locais em um comando remoto definindo parâmetros para o comando remoto e usando o parâmetro ArgumentList do cmdlet Invoke-Command para especificar a variável local como o valor do parâmetro.

Esse formato de comando é válido em Windows PowerShell 2.0 e versões posteriores do Windows PowerShell.

  1. – Use a palavra-chave param para definir parâmetros para o comando remoto. Os nomes de parâmetro são espaços reservados que não precisam corresponder ao nome da variável local.

  2. – Use os parâmetros definidos pela palavra-chave param no comando.

  3. – Use o parâmetro ArgumentList do cmdlet Invoke-Command para especificar a variável local como o valor do parâmetro.

Por exemplo, os comandos a seguir definem a variável $ps na sessão local e, em seguida, usam a variável em um comando remoto. O comando usa $log como o nome do parâmetro e a variável local, $ps, como seu valor.

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

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

PALAVRAS-CHAVE

about_Using

CONSULTE TAMBÉM

about_Remote

about_PSSessions

about_Scopes

Enter-PSSession

Invoke-Command

New-PSSession