我的本地机器上有一个函数 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
需要 astring[]
所以你可以放弃foreach
. 然后,您可能只需将函数定义和调用放在一个脚本块中。