L’arrêt/démarrage d’une machine virtuelle s’effectue sur le même modèle que l’exemple précédent ; c’est à dire que nous allons utiliser la même classe d’objets à savoir Msvm_ComputerSystem. Ce qui va changer en revanche, c’est que cette fois-ci au lieu d’utiliser des propriétés d’objets, nous utiliserons une méthode
Démarrer/arrêter une machine virtuelle
afin d’agir sur l’instance (objet) représentant une machine virtuelle.
La première chose à faire est d’obtenir une référence vers la machine virtuelle à démarrer ou arrêter.
Pour ce faire nous allons effectuer un filtre sur le nom d’une machine virtuelle. Par exemple supposons que nous voulions démarrer la machine virtuelle dont le nom est « Windows 7 X64 » :
PS > $VMList = Get-WmiObject -Namespace root\virtualization Msvm_ComputerSystem -ComputerName
HYPERV-SRV
PS > $VM = $VMList | Where-Object {$_.ElementName -eq 'Windows 7 X64'}
Ensuite nous n’avons plus qu’à appliquer la seule méthode disponible pour cette classe à savoir la méthode RequestStateChange. Nous lui indiquons la valeur 2 qui signifie « démarrer ».
PS > $resultat = $VM.RequestStateChange(2)
PS > $resultat
…
Job : \\HYPERV-SRV\root\virtualization:Msvm_ConcreteJob.InstanceID="21825FC8-2830-4C90
B1D5-9B2EFD8C57BC"
ReturnValue : 4096
Etant donné que l’arrêt ou le démarrage n’est pas immédiat (action asynchrone), nous obtenons en retour un objet qui comprend un code de retour et une référence vers un « job WMI ». La valeur 4096 signifie que l’ordre a bien été transmis. Pour connaître l’état du job WMI, il faut passer la commande suivante :
PS > [WMI]$resultat.job
…
Cancellable : True
Caption : Démarrage
DeleteOnCompletion : False
Description : Initialisation et démarrage de l'ordinateur virtuel
ElapsedTime : 00000000000001.841501:000
ElementName : Démarrage
ErrorCode : 0
ErrorDescription :
ErrorSummaryDescription :
HealthState : 5
InstallDate : 16010101000000.000000-000
InstanceID : 21825FC8-2830-4C90-B1D5-9B2EFD8C57BC
JobRunTimes : 1
JobState : 7
JobStatus : Le travail est terminé.
LocalOrUtcTime : 2
Name : Démarrage
Notify :
OperationalStatus : {17, 2}
OtherRecoveryAction :
Owner : HYPERV-SRV\Administrator
PercentComplete : 100
Priority : 0
RecoveryAction : 2
RunDay :
RunDayOfWeek :
RunMonth :
RunStartInterval :
ScheduledStartTime :
StartTime : 20100816124307.000000-000
Status : OK
StatusDescriptions : {Le travail est terminé., Le travail s'est correctement terminé.}
TimeBeforeRemoval : 00000000000500.000000:000
TimeOfLastStateChange : 20100816124309.000000-000
TimeSubmitted : 20100816124307.000000-000
UntilTime :
En observant la propriété StatusDescriptions, nous savons si le travail a été correctement exécuté ou non.
Pour résumer sur WMI…
L’interface WMI offre toute la richesse suffisante pour mener à bien toutes les tâches d’administration autour d’Hyper-V mais il faut au préalable bien s’imprégner de la documentation où alors s’inspirer d’exemples prêts à l’emploi. Ceci étant dit, il faut savoir qu’il existe également un jeu de commandes distribué sous la licence Microsoft Public license MS-PL proposé sous la forme d’un module. Celui-ci va grandement nous simplifier la vie…
Téléchargez gratuitement cette ressource

Endpoint Security : Guide de Mise en œuvre
Détournement d’applications légitimes, élévation de privilèges, logiciels malveillants furtifs : comment les solutions de Endpoint Security permettent elles de faire face aux nouvelles techniques d'attaques complexes ? Découvrez, dans ce Guide Endpoint Security, les perspectives associées à leur mise en œuvre.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Les robots et l’IA, solutions d’avenir pour les entreprises
- Les vulnérabilités les plus répandues ciblant les entreprises dans le Cloud
- Se réunir moins souvent mais faire plus !
- En 2022, les entreprises doivent redoubler d’efforts pour affronter les ransomwares
- Pourquoi les RSSI devraient s’opposer à la méthode Agile dans l’IT
