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.
– 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.
– Use os parâmetros definidos pela palavra-chave param no comando.
– 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