Powershell Remoting: выполнение локальной функции на двух целевых серверах
У меня есть функция foo на моей локальной машине. (В моем профиле, но вызов c:\scripts\foo.ps1 также будет в порядке!) Как мне загрузить это на ServerA и ServerB, чтобы я мог выполнить функцию в следующем выражении?
Это то, что я пытался без успеха..
$serverlist =
"192.168.20.1",
"192.168.20.12"
foreach ($item in $serverlist) {
New-PSSession -ComputerName "$item" -Credential $cred -Name ($item + "_session")
Invoke-Command -ComputerName $item -Credential $cred -filepath scripts:\foo.ps1
Invoke-Command -ComputerName $item -Credential $cred -scriptblock {foo}
}
1 ответ
Две ошибки здесь:
Прежде всего,
Invoke-Command
можно использовать либо-ComputerName
параметр или-Session
параметр. Вы создаете сеанс здесь, но не используете его, поэтому выполняемые команды выполняются в разных сеансах и ничего не знают друг о друге.-ComputerName
занимаетstring[]
чтобы вы могли броситьforeach
, Тогда вы, вероятно, можете просто поместить определение функции и вызов в один блок скрипта.