fbpx

Wenn ihr einen vSphere Cluster ohne DRS (weil die Essentials-Lizenz es leider nicht beinhaltet) betreut dann habe ich hier 2 kleine PowerCLI Scripte, die euch helfen können und natürlich auch die Basis für andere Projekte sein kann.

Auf alle Fälle muss auf dem PC die aktuelle Version von PowerCLI installiert werden. Das kann man hier runterladen.

https://code.vmware.com/web/tool/12.0.0/vmware-powercli

Eine ältere Version, passend zu eurem Umfeld tut es natürlich auch. Und das ganze kann auch genutzt werden, um z.B. einen Knoten mal freizuschalten per Script.

Normalerweise aktiviere ich den Wartungsmode auf dem Knoten und DRS räumt den Knoten frei. Und hier setzt dann das Script an.

Grundsätzlich geht es auch über die Weboberfläche aber wir sind ja Scripter also wird gescriptet.

Das erste Script verschiebt alle VMs von einem auf einen anderen Knoten.

#######################################
# Script zum Verschieben aller VMs
#
# V1.0 02.04.2020 Bulletproof-Admin.de
#####################################

write-host "Verbindung zum Sphere Server..."
Connect-VIServer -Server vcenter -User "***USERNAME**" -Password "***PASSWORT***" | Out-Null

$quelle = Get-VMHost | Out-GridView -Title "Host wählen, der geleert werden soll..." -OutputMode Single 
if (-not $quelle)
{
    Write-Host "Abbruch" -ForegroundColor Red
    exit
}

$ziel = Get-VMHost | Out-GridView -Title "Host wählen, der das Ziel werden soll..." -OutputMode Single 
if (-not $ziel)
{
    Write-Host "Abbruch" -ForegroundColor Red
    exit
}

$vms = Get-VM -Location $quelle.name

foreach ($vm in $vms)
{
    Move-VM -VM $vm.name -Destination $ziel.name
}

Als Selector nutze ich einfach den Out-GridView Dialog.

Im zweiten Script können dann einzelne VMs von einem Host auf einen anderen Host verschoben werden. Auch hier kommt wieder das GridView zum Einsatz.

#######################################
# Script zum Verschieben einiger VMs
#
# V1.0 02.04.2020 Bulletproof-Admin.de
#####################################

write-host "Verbindung zum Sphere Server..."

Connect-VIServer -Server vcenter -User "**USERNAME***" -Password "**PASSWORD***" | Out-Null

$quelle = Get-VMHost | Out-GridView -Title "Host wählen, der Quelle ist..." -OutputMode Single 
if (-not $quelle)
{
    Write-Host "Abbruch" -ForegroundColor Red
    exit
}

$ziel = Get-VMHost | Out-GridView -Title "Host wählen, der Ziel sein soll..." -OutputMode Single 
if (-not $ziel)
{
    Write-Host "Abbruch" -ForegroundColor Red
    exit
}

$vms = Get-VM -Location $quelle.name | Out-GridView -Title "VMs zum verschieben wählen" -PassThru
if (-not $vms)
{
    Write-Host "Abbruch" -ForegroundColor Red
    exit
}

foreach ($vm in $vms)
{
    Move-VM -VM $vm.name -Destination $ziel.name
}

Ihr müsste natürlich euren Host und die passenden Credentials eintragen.

In den Zuge wollte ich mal wieder betonen, wie wichtig es ist, euren PowerShell Code zu signieren. Das komplette Freigeben von PowerShell mit Execution-Policy ist definit keine gute Idee. Das ist ein Einfallstor für Viren und Trojaner. Weil PowerShell eben so mächtig ist, wird es dafür leider genutzt. Bei uns im LAN ist nur Signierter Code von extern oder aus unserer CA per GPO erlaubt.

Code-Signing Tasse – Im Shop erhältlich.

Zum Thema Code-Signing und PowerShell werde ich noch Beiträge erstellen. Ich habe dazu auch ein paar coole Scripts.

#WirBleibenZuhause

Alex


0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.