运行 使用中央服务器在远程服务器上获取 ClusterGroup

Run Get-ClusterGroup on remote server using Central server

我有一个中央服务器,我可以从中运行以下 PowerShell 命令来获取集群服务器的集群组。

Enter-pssession -computername (ip-address) -credential (domain user)

它提示我输入密码然后我得到会话并执行

get-clustergroup

好了到此为止就好了

现在我想通过转换为 PowerShell 脚本来实现完全自动化

当我在 Powershell ISE 中 运行 时,以下命令运行良好,并得到 get-clustergroup

的输出
$password = ConvertTo-SecureString "password" -AsPlainText -Force
$user = "domain\user"
$cred = New-Object System.Management.Automation.PSCredential ($user,$password)

Enter-PSSession -ComputerName IP.Add.RE.SS -Credential $cred

get-clustergroup 

但是当我使用 PowerShell 保存关于脚本和 运行 时,出现以下错误。

get-clustergroup: the cluster service is not running

我想通过编写脚本来自动执行该过程以获得 get-clustergroup 四个集群服务器的输出。

我是 PowerShell 脚本的新手。我怎样才能保存输出?

您可以运行以下命令而不是创建到其他服务器的会话,这将运行远程计算机上的命令和return输出到您的控制台:

Invoke-Command -ComputerName <IPAddress> -ScriptBlock { Get-ClusterGroup } -Credential $cred

如果您希望将来检索,您可以将该输出存储到一个变量中。

由于 -ComputerName 可以接受数组对象,您可以修改命令以包含所有四个服务器。下面显示了如何使用所有计算机名称并将输出存储在变量 $Output:

$Output = Invoke-Command -ComputerName "Server1","Server2","Server3","Server4" `
         -ScriptBlock {Get-ClusterGroup} -Credential $cred
$Output

您的计算机名称也可以作为数组存储在变量中。然后该变量可以在您的 -ComputerName 参数中使用:

$Computers = "Server1","Server2","Server3","Server4"
Invoke-Command -ComputerName $Computers -ScriptBlock { Get-ClusterGroup } -Credential $cred

有关详细信息,请参阅 Invoke-Command