我的本地计算机上有一个函数 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
。然后你可能只需将函数定义和调用放在一个脚本块中。