Ik ben sinds kort bezig met het bestuderen van Powershell en dan vooral met de VI-Toolkit. In mijn lab omgeving thuis maak ik bepaalde omgevingen binnen een resource pool. Ik heb bijvoorbeeld een Server 2003 lab waarin een klein Windows 2003 domain draait. Omdat ik nogal wat verschillende labs heb, maak ik voor elk lab een aparte Recource Pool aan. Om het starten van zo’n lab te versimpelen heb ik het onderstaande script gemaakt.
In het eerste blok van het script wordt er verbinding gemaakt met de VC Server. Via de cmd-let
Connect-VIServer de variable $hostname word gevuld d.m.v. een vraag. Dit geld ook voor de variable $rp.
Nadat de variabelen zijn gevuld en er verbinding is gemaakt met de VC Server wordt het laatste blok uitgevoerd.
Als je dit script uitvoert vraagt hij om de volgende input:
What host do you want to connect to?: w2003vc (voer hier de naam van je virtualcenter server in).
Enter Resource Pool: srv2003 (voer hier de naam van de resource pool in).
Vervolgens worden alle VM’s die in de resource pool srv2003 zitten opgestart.
In VirtualCenter zie je ook het e.e.a. starten:
Om dit script te kunnen gebruiken als Shutdown script verander je de volgende regel:
{Start-VM | $vm} in {Shutdown-VMGuest | $vm} (Deze optie werkt alleen als de VMware Tools actief zijn. Je kunt ook Stop-VM gebruiken om de VM uit te zetten).
Het kan ook in één regel (als je Connect-VIServer al gedaan hebt):
Get-ResourcePool (Read-Host “What Resource Pool?”) | Start-VM
Dat ForEach loopje is in ieder geval overbodig (tenzij je in je scriptje nog meer met de verzameling vm’s doet natuurlijk). Dat is juist één van de mooie dingen van Powershell.
Ik krijg een foutmelding:
PS C:\Program Files\VMware\Infrastructure\VIToolkitForWindows> Get-ResourcePool
(Read-Host “What Resource Pool?”) | Start-VM
What Resource Pool?: production
Start-VM : The input object cannot be bound to any parameters for the command e
ither because the command does not take pipeline input or the input and its pro
perties do not match any of the parameters that take pipeline input.
At line:1 char:61
+ Get-ResourcePool (Read-Host “What Resource Pool?”) | Start-VM <<<<