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 ответ

Две ошибки здесь:

  1. Прежде всего, Invoke-Command можно использовать либо -ComputerName параметр или -Session параметр. Вы создаете сеанс здесь, но не используете его, поэтому выполняемые команды выполняются в разных сеансах и ничего не знают друг о друге.

  2. -ComputerName занимает string[] чтобы вы могли бросить foreach, Тогда вы, вероятно, можете просто поместить определение функции и вызов в один блок скрипта.

Другие вопросы по тегам