У меня есть функция 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}
}
Здесь две ошибки:
Прежде всего, Invoke-Command
можешь использовать либо в -ComputerName
параметр или в -Session
параметр. Здесь вы создаете сеанс, но не используете его, поэтому выполняемые команды выполняются в разных сеансах и ничего не знают друг о друге.
-ComputerName
берет string[]
чтобы ты мог бросить foreach
. Тогда вы, вероятно, сможете просто поместить определение функции и вызов в один блок скрипта.