Назад | Перейти на главную страницу

Удаленное взаимодействие Powershell: выполнение локальной функции на двух целевых серверах

У меня есть функция 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 параметр. Здесь вы создаете сеанс, но не используете его, поэтому выполняемые команды выполняются в разных сеансах и ничего не знают друг о друге.

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