Você pode realizar isso facilmente com o uso de sessões do PowerShell.
Primeiramente, habilite o Remoting do PowerShell. Para fazer isso, abra o PowerShell como administrador e execute enable-psremoting -force
.
Qualquer coisa que você declarar localmente pode ser passada para uma sessão usando uma sintaxe semelhante à seguinte:
$a = 1
$b = 2
New-PSSession -ComputerName MyRemoteMachineName | Out-Null
Invoke-Command -Session (Get-PSSession) -ArgumentList($a, $b) -ScriptBlock {
$args[0]
$args[1]
}
Get-PSSession | Remove-PSSession
Aodeclararvariáveisepassá-lasparaoscomandosdasessão"Lista de Argumentos", elas são passadas para a sessão remota em ordem. Nesse caso:
ArgumentList($a, $b)
torna-se $args[0]
& %código%. Uma terceira variável poderia se tornar $args[1]
(e assim por diante).
recuperar de uma sessão é igualmente simples - com o seguinte:
$myString = "Something"
New-PSSession -ComputerName MyRemoteComputerName | Out-Null
$outputFromSession = Invoke-Command -Session (Get-PSSession) -ArgumentList($myString) -ScriptBlock {
$args[0] + " " + $env:COMPUTERNAME
}
$outputFromSession
Get-PSSession | Remove-PSSession
Atribuindo a variável $ags[2]
para capturar qualquer coisa retornada - isso é passado de volta da sessão remota para a local e pode ser usado mais tarde e em outro lugar, se necessário.
Fácil assim:)
Ben