PowerCLI zu Fuß durch Cluster und hosts

Hier ist, was ich versuche zu tun: ich habe einen vSphere-setup mit mehreren Clustern, darunter solche Cluster gibt es ein paar hosts.

Ich versuche, ein Skript zu schreiben, dass Spaziergänge durch den Clustern und innerhalb jedes Clusters legt der host in den Wartungsmodus versetzt wird, bewegt er sich außerhalb des Clusters, starten/stoppen einer VM, Speicher es, dann bewegt sich der host wieder in den cluster verschoben wurde, aus.

Hier ist was ich habe, so weit. Die innere Schleife funktioniert, aber die äußere macht einfach alles zweimal ausführen und hinzufügen den Namen des Clusters als $cluster in der inneren Schleife.

Irgendwelche Ideen? Ich möchte nur die innere Schleife ausgeführt, die für alle hosts in jedem cluster.

Fügte ich -WhatIf für die Prüfung, können Sie ignorieren diese.

Connect-VIServer vcenter01

$clusters = Get-Cluster
$esxhosts = Get-Cluster $clusters | Get-VMHost
$Datacenter = "Datacenter01"
$sleep = 1

& {
    foreach ($cluster in $clusters) {
        foreach ($esxhost in $esxhosts) {
            Set-VMHost $esxhost -State Maintenance -WhatIf
            Move-VMhost $esxhost -Destination $Datacenter -WhatIf
            Set-VMHost $esxhost -State Connected -WhatIf
            Sleep $sleep
            Stop-VMGuest -Vm Z-VRA-$esxhost -Confirm:$false -WhatIf
            Sleep $sleep
            Set-VM -Vm Z-VRA-$esxhost -MemoryGB 6 -Confirm:$false -WhatIf
            Start-VM -Vm Z-VRA-$esxhost -WhatIf
            Sleep $sleep
            Move-VMhost $esxhost -Destination $cluster -WhatIf
        }
    }
}

Disconnect-VIServer vcenter01

Hier ist das, was eine funktionierende Kopie aussieht (Dank @Ansgar Wiechers):

Fügte ich in einigen code zum starten/stoppen HA admission control auf jedem cluster-wie es funktioniert, indem es. Das wird verhindern, dass Probleme mit der VM die Räumung während der Wartung-Modus, wenn Sie sind niedrig auf resorces.

Connect-VIServer vcenter01

$Datacenter = "Datacenter01"
$sleep = 1

Get-Cluster  | ForEach-Object {
$cluster = $_
Set-Cluster -HAAdmissionControlEnabled $false -Cluster $cluster -Confirm:$false -Whatif
$cluster  | Get-VMHost | ForEach-Object {
        Set-VMHost $_ -State Maintenance -WhatIf
        Move-VMhost $_ -Destination $Datacenter -WhatIf
        Set-VMHost $_ -State Connected -WhatIf
        Sleep $sleep
        Stop-VMGuest -Vm Z-VRA-$_ -Confirm:$false -WhatIf
        Sleep $sleep
        Set-VM -Vm Z-VRA-$_ -MemoryGB 6 -Confirm:$false -WhatIf
        Start-VM -Vm Z-VRA-$_ -WhatIf
        Sleep $sleep
        Move-VMhost $_ -Destination $cluster -WhatIf


    }
   Set-Cluster -HAAdmissionControlEnabled $true -Cluster $cluster Confirm:$false -Whatif
}


Disconnect-VIServer vcenter01
InformationsquelleAutor Nov2009 | 2017-05-03
Schreibe einen Kommentar