Erro Get-Clusternode

0

Acabei de começar no mundo do Powershell e estou escrevendo um script simples para colocar hosts no modo de manutenção, aplicar patches, reinicializar e, em seguida, colocar de volta no servidor. Decidi usar o serviço de clustering de failover para verificar a disponibilidade do host antes de colocá-lo novamente em serviço. Mas parece que estou recebendo um erro sobre o qual não consigo encontrar muita coisa.

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'.

O código que tenho é:

$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
}
    
por user96596 04.09.2011 / 17:45

1 resposta

0

Get-VMHost retorna "VMHost []" como um tipo.

Assim, cada VMHost retornado é um tipo estruturado personalizado, não uma string simples.

Meu entendimento é que a estrutura do VM-Host é assim (eu não tenho os add-ons da PS VM instalados aqui para checar):

  • Estado
  • CustomFields
  • ID
  • Nome

Então, talvez tente usar $VMHost.Name quando você quiser apenas o nome (string) do VMHost atual:

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

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

    
por 04.09.2011 / 18:41