Précédemment, nous avons examiné PowerCLI – ce que c’est, comment l’installer et l’intégrer dans Windows Powershell ISE. Maintenant, regardons le script de base, y compris la connexion, les commandlets PowerCLI, ainsi que la boucle.
Scripting de base PowerCLI
Jetons un coup d’œil à quelques commandlets PowerCLI de base pour voir à quel point il est facile de commencer à extraire des informations de notre environnement vSphere avec PowerCLI. Gardez à l’esprit que ce qui suit n’est en aucun cas censé être un tutoriel complet, mais plutôt une introduction à PowerCLI et comment commencer à exécuter des commandlets et à apprendre à automatiser votre environnement.
Le premier commandlet que nous devons exécuter est celui pour se connecter réellement à notre environnement vSphere. Vous pouvez vous connecter directement à un hôte ESXi ou à un serveur vCenter.
Pour vous connecter, exécutez la commande suivante dans une session PowerShell activée pour PowerCLI:
connect-viserver -server 〈votreserveur〉
Lorsque vous exécutez la commande, vous serez invité à saisir vos informations d’identification. Tapez votre nom d’utilisateur et votre mot de passe pour votre serveur ESXi ou votre serveur vCenter.
Une des commandes les plus basiques que nous pouvons exécuter lorsque nous nous connectons soit à ESXi soit à vCenter est de voir toutes les VM dans l’environnement. Nous utilisons le commandlet get-vm pour afficher des informations sur les VM invitées.
Get-VM - Le commandlet get-vm répertorie les VM en cours d'exécution sur l'hôte connecté
Pour obtenir des informations plus détaillées à partir du get-vm
commandlet, nous pouvons afficher toutes les informations avec la commande:
Get-VM | fl
– Affiche des informations plus détaillées telles que le système d’exploitation invité, les pools de ressources, le niveau de version du matériel VM, le dossier dans lequel il est situé, et bien d’autres détails.
Maintenant, retournons des informations spécifiques et utiles de la commande Get-VM. Trouvons les VM qui sont dans l’état PoweredOff. Nous pouvons obtenir des informations à partir de la Get-VM
commande puis transmettre cela à where-object
pour sélectionner les informations spécifiques que nous voulons interroger – dans ce cas PowerState
. Comme vous pouvez le voir, il y a des mondes de possibilités pour obtenir diverses informations sur les VM et transmettre ces informations à une autre commande PowerShell.
Get-VM | where-object {$_.PowerState -eq "PoweredOff"}
Comme vous pouvez le voir, cela affiche uniquement les VM qui sont dans l’état « PoweredOff ». Cela peut être extrêmement utile. Nous pouvons même transmettre le résultat de la commande ci-dessus à la Start-VM commande. Ainsi, nous pouvons essentiellement obtenir toutes les VM éteintes et ensuite allumer ces VM.
Get-VM | where-object {$_.PowerState -eq "PoweredOff"} | Start-VM
Que dire de l’arrêt de VM spécifiques? Nous pouvons également le faire. Nous pouvons appeler la VM par son nom puis utiliser la commande Stop-VMGuest qui lance un arrêt du système d’exploitation invité.
Get-VM 〈votrevm〉 | Stop-VMguest
Si vous ne souhaitez pas recevoir la confirmation de l’action, nous pouvons ajouter le -confirm:false paramètre:
Supposons que nous voulions voir combien de machines virtuelles nous avons en cours d’exécution qui ont plus de 1 CPU assigné. Encore une fois, nous pouvons utiliser la commande where-object pour sélectionner l’objet NumCpu.
Get-VM | where-object {$_.NumCpu –gt 1 }
Boucles PowerCLI
Les boucles vous permettent d’effectuer la même opération plusieurs fois sur des objets sélectionnés ou un nombre de fois parcourus. Par exemple, avec une boucle foreach, nous pouvons exécuter une certaine action plusieurs fois. Elle est configurée comme le pseudo-code ci-dessous :
foreach ($var in $vars){
Faire quelque chose…
}
Si nous voulons être précis sur les objets sur lesquels nous allons effectuer l’action, nous pouvons, par exemple, parcourir une liste spécifique de machines virtuelles à partir d’un fichier texte. Pour remplir le fichier texte, nous pouvons exécuter notre commande Get-VM en sélectionnant les propriétés que nous voulons, puis rediriger cela vers un fichier texte. Nous pouvons ensuite utiliser PowerShell pour lire le fichier texte et placer les machines virtuelles dans un tableau sur lequel nous pouvons boucler et effectuer une action. Ci-dessous, nous ajoutons un nouvel adaptateur réseau aux machines virtuelles de la liste.
Get-vm | where-object {$_.MemoryGB –eq 4 } | select -ExpandProperty Name | out-file c:\VMs.txt
$vms = get-content c:\VMs.txt
Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Nom du groupe de ports〉" -Type "VMXNET3" –startconnected
}
Ressources
Il existe de nombreuses excellentes ressources sur le web, y compris des sites de blogs personnels, des documents officiels, des exemples de code, etc. Ce que j’ai constaté, c’est que si vous pouvez imaginer quelque chose que vous voulez faire, il y a probablement quelqu’un qui a déjà écrit une ligne de code PowerCLI qui fera ce que vous voulez. La bonne chose aussi, c’est que normalement, vous pouvez trouver quelque chose de très proche de ce que vous voulez faire, et avec très peu de modifications après avoir appris les bases, vous pouvez le modifier pour répondre à vos besoins. En faisant cela aussi, vous apprenez PowerCLI et comment cela fonctionne, ainsi que comment modifier le code pour effectuer la tâche que vous devez accomplir.
A great place to start with documentation and other resources is the official VMware PowerCLI release and documentation site. Here, you can download the binaries as well as the official User’s Guide.
Il existe également des tonnes de livres avec des scripts et des exemples de scripts qui peuvent être disséqués et modifiés. Gardez à l’esprit la communauté des administrateurs VMware là-bas qui, pour la plupart, sont heureux de partager les connaissances qu’ils ont apprises de quelqu’un d’autre en chemin pour devenir compétents avec PowerCLI. Contactez ceux de votre communauté pour obtenir de l’aide sur des points spécifiques ou simplement des principes généraux.
Pensées
PowerCLI est très puissant, pour ne pas dire plus. Nous n’avons fait que gratter la surface dans les exemples ci-dessus qui ont été montrés. Toutes les tâches que vous répétez, ou qui sont difficiles à faire dans le client web sont de bons candidats pour la programmation avec PowerCLI. En fait, c’est généralement comme ça que la plupart des gens sont présentés à PowerCLI – ils ont une tâche qu’ils doivent effectuer automatiquement ou une action qui est basée sur d’autres actions dans vSphere, ou encore des actions répétitives qui sont bien adaptées pour la programmation.
La meilleure façon d’apprendre PowerCLI est de le télécharger, de l’installer et de commencer à l’utiliser dans un environnement de laboratoire tel qu’un laboratoire à domicile. La véritable puissance d’un environnement VMware vSphere n’est débloquée que lorsque vous voyez le potentiel de l’automatisation pour prendre le contrôle de vSphere. Alors, commencez à scripter avec PowerCLI et vous ne regarderez jamais en arrière !
Source:
https://www.nakivo.com/blog/basic-powercli-scripting-vmware-vsphere/