我有一个中央服务器,我可以从中运行以下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
但是当我保存about脚本并使用PowerShell运行时,我收到以下错误。
get-clustergroup:集群服务未运行
我想通过编写脚本来自动化该过程,以获得四个集群服务器的get-clustergroup
输出。
我是PowerShell脚本的新手。我怎样才能保存输出?
您可以运行以下命令而不是创建与其他服务器的会话,该命令将在远程计算机上运行该命令并将输出返回到您的控制台:
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。