Я написал командный файл для установки IP-адреса хост-сервера и двух виртуальных машин, работающих на нем. В данный момент вы должны скопировать скрипт на каждую машину и запустить его, а это не то, что мне нужно, я хотел бы запустить скрипт на хост-сервере и передать команды каждой виртуальной машине.

Это возможно?

1 ответ1

0

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

Легко как то :)

Бен

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .