Powershell Remoting:在两个目标服务器上执行本地功能

Powershell Remoting:在两个目标服务器上执行本地功能

我的本地计算机上有一个函数 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

这里有两个错误:

  1. 首先,Invoke-Command可以使用任何一个参数-ComputerName或者参数-Session。您在此处创建了一个会话,但并未使用它,因此运行的命令在不同的会话中执行,彼此之间没有任何联系。

  2. -ComputerName需要一个string[],所以你可以删除foreach。然后你可能只需将函数定义和调用放在一个脚本块中。

相关内容