我编写了一个批处理文件来设置主机服务器及其上运行的两台虚拟机的 IP 地址。目前,您必须将脚本复制到每台机器上并运行它,这不是我想要的,我想在主机服务器上运行脚本并将命令传递给每台虚拟机。
这可能吗?
答案1
您可以使用 PowerShell 会话轻松完成此操作。
首先,启用 PowerShell 远程处理。为此,以管理员身份打开 PowerShell 并运行enable-psremoting -force
。
您在本地声明的任何内容都可以使用类似以下的语法传递到会话中:
$a = 1
$b = 2
New-PSSession -ComputerName MyRemoteMachineName | Out-Null
Invoke-Command -Session (Get-PSSession) -ArgumentList($a, $b) -ScriptBlock {
$args[0]
$args[1]
}
Get-PSSession | Remove-PSSession
通过声明变量并将其传递到会话命令“参数列表”,它们将按顺序传递到远程会话中。在本例中:
ArgumentList($a, $b)
变为$args[0]
& $args[1]
。第三个变量可能变为$ags[2]
(依此类推)。
从会话中检索同样简单 - 如下所示:
$myString = "Something"
New-PSSession -ComputerName MyRemoteComputerName | Out-Null
$outputFromSession = Invoke-Command -Session (Get-PSSession) -ArgumentList($myString) -ScriptBlock {
$args[0] + " " + $env:COMPUTERNAME
}
$outputFromSession
Get-PSSession | Remove-PSSession
通过分配变量$outputFromSession
来捕获返回的任何内容 - 这会从远程会话传回本地会话,然后可以在需要时在稍后和其他地方使用。
就这么简单:)
本