Вы можете легко сделать это с помощью сеансов PowerShell.
Во-первых, включите PowerShell Remoting. Для этого откройте PowerShell от имени администратора и запустите enable-psremoting -force
.
Все, что вы объявляете локально, может быть передано в сеанс с использованием следующего синтаксиса:
$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

Объявляя переменные и передавая их в сеансовые команды "Список аргументов", они передаются в удаленный сеанс по порядку. В этом случае:ArgumentList($a, $b)
становится $args[0]
& $args[1]
. Третья переменная могла бы стать $ags[2]
(и так далее).
Извлечение из сеанса так же просто - со следующим:
$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

Присваивая переменную $outputFromSession
для захвата всего, что возвращается - это передается из удаленного сеанса в локальный и затем может быть использовано позже и в других местах, если это необходимо.
Легко как то :)
Бен