Powershell远程处理:在两台目标服务器上执行本地function

我的本地机器上有一个函数foo。 (在我的个人资料中,但调用c:\ scripts \ foo.ps1也可以!)我如何加载ServerA和ServerB这样我可以在下一个语句执行该function?

这是我试图没有成功..

$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参数。 您正在创build会话,但没有使用它,因此运行的命令在不同的会话中执行,彼此之间不知道任何事情。

  2. -ComputerName需要一个string[]所以你可以放弃foreach 。 那么你可以把函数定义和调用放在一个脚本块中。