Get-Clusternode 错误

Get-Clusternode 错误

我刚刚开始使用 Powershell,我正在编写一个简单的脚本,将主机置于维护模式,应用补丁,重新启动,然后重新投入服务器。我决定使用故障转移群集服务检查主机的可用性,然后再将其重新投入使用。但我似乎遇到了一个错误,但我找不到太多相关信息。

Get-ClusterNode : Cannot convert 'hyperv1.example.com' to the type     'System.Collections.Specialized.StringCollection' required by parameter 'Name'. Unable to cast object of type 'System.Management.Automation.PSObject' to type 'System.String'.

我的代码是:

$VMMServer = Get-VMMServer -ComputerName "scvmm.example.com"
$Cluster = "HyperVCluster"
$VMHosts = Get-VMHost -VMHostCluster $Cluster
Foreach ($VMHost in $VMHosts) {
psexec \\$VMHost -s wuinstall /reboot /install
sleep 120
$Status = Get-Clusternode -Cluster $Cluster -name $VMHost | select state
function CheckHostStatus {
if ($Status -match "Up") {
Write-Host "Host is Up"
Write-Host "Placing host" $VMHost "back into service."
    Enable-VMHost $VMHost
                        }
elseif ($Status -match "Down") {
Write-Host "Host is still rebooting"
sleep 120
CheckHostStatus
}
                    }
CheckHostStatus
}

答案1

Get-VMHost 返回“VMHost[]”作为类型。

因此返回的每个 VMHost 都是自定义的结构化类型,而不是简单的字符串。

我的理解是 VM-Host 结构是这样的(我没有安装 PS VM 插件来仔细检查):

  • 状态
  • 自定义字段
  • ID
  • 姓名

$VMHost.Name因此,当您只想要当前 VMHost 的(字符串)名称时,可以尝试使用:

$Status = Get-Clusternode -Cluster $Cluster -name $VMHost.Name | select state

Write-Host "Placing host " + $VMHost.Name + " back into service."

相关内容