Écriture des scripts PowerCLI pour VMware vSphere

Auparavant, nous avons examiné PowerCLI – qu’est-ce que c’est, comment l’installer, comment l’intégrer avec Windows Powershell ISE. Maintenant, nous allons discuter l’écriture des scripts simples, y compris la connexion, les commandlets de PowerCLI et la mise en boucle.

NAKIVO pour la sauvegarde VMware vSphere

NAKIVO pour la sauvegarde VMware vSphere

Protection complète des données VM VMware vSphere, récupération instantanée, sauvegardes sécurisées sur site, hors site et dans le cloud.

Écriture de scripts 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 un tutoriel complet, mais plutôt une introduction à PowerCLI. Avec l’information dans cet article, vous pouvez commencer à écrire des commandlets et apprendre à automatiser votre environnement.

Le premier commandlet que nous devons exécuter est celui qui sert à se connecter à notre environnement vSphere. Vous pouvez vous connecter directement à un hôte ESXi ou à vCenter Server.

Pour vous connecter, exécutez la commande suivante dans une session PowerShell avec PowerCLI activé :

  • connect-viserver -server yourserver

Lorsque vous exécutez la commande, vous serez invité à saisir vos informations de connexion. Saisissez votre nom d’utilisateur et votre mot de passe pour votre serveur ESXi ou vCenter Server.

Basic PowerCLI scripting

L’une des commandes les plus élémentaires que nous pouvons exécuter lorsque nous nous connectons à ESXi ou vCenter est la visualisation de toutes les machines virtuelles dans l’environnement. Nous utilisons le commandlet get-vm pour afficher des informations sur les machines virtuelles invitées.

  • Get-VM – Le commandlet get-vm nous donne une liste les machines virtuelles qui fonctionnent sur l’hôte connecté.

get-vm commandlet

Pour obtenir plus de détails sur le commandlet get-vm, 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é (guest OS), les listes de ressources partagées (Resource Pools), le matériel informatique et les versions, le dossier dans lequel le VM se trouve et de nombreux autres détails.

Get VM Full Information

Maintenant, retournons des informations utiles spécifiques du commandlet get-VM. Trouvons les machines virtuelles qui sont dans un état inactif (powered off). Nous pouvons obtenir des informations à partir du commandlet Get-VM, puis les transférer au fonction where-object pour sélectionner les informations spécifiques que nous cherchons – dans ce cas, PowerState. Comme vous pouvez le constater, il existe de nombreuses possibilités d’obtenir diverses informations sur les machines virtuelles et de transférer ces informations dans des autres commandlets PowerShell.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”}

Get-VM PowerState

Comme vous pouvez le voir, cela affiche uniquement les machines virtuelles qui se trouvent dans l’état (PowerState) “PoweredOff”. Cela peut être extrêmement utile. Nous pouvons même diriger le résultat de la commande ci-dessus dans le commandlet Start-VM. Donc, essentiellement, nous pouvons obtenir toutes les machines virtuelles hors tension et aluminer ces machines virtuelles.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”} | Start-VM

Start-VM commandlet

Nous pouvons également fermer des machines virtuelles spécifiques. Nous pouvons appeler la VM par son nom, puis utiliser le commandlet Stop-VMGuest, qui déclenche un arrêt du système d’exploitation invité (guest OS).

  • Get-VM 〈yourvm〉 | Stop-VMguest

Stop-VMguest commandlet

Si vous ne souhaitez pas recevoir la confirmation de l’action, vous pouvez ajouter le paramètre -confirm:false :

Stop-VMguest –confirm:false

Disons que nous voulons voir combien de machines virtuelles que nous avons en cours d’exécution avec plus d’une UC (unité centrale) assignée. Encore une fois, nous pouvons utiliser le commandlet where-object pour sélectionner l’objet NumCpu.

  • Get-VM | where-object {$_.NumCpu -gt 1 }

where-object commandlet

Boucles PowerCLI

Les boucles vous permettent d’effectuer la même opération plusieurs fois – soit sur une liste des objets sélectionnés, soit un certain nombre de fois. Par exemple, avec une boucle foreach, nous pouvons boucler plusieurs fois une action donnée. Le pseudocode ci-dessous représente la configuration de la boucle :

foreach ($var in $vars) {
…fait quelque-chose…
}

Si nous voulons être précis avec 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 commandlet Get-VM, en sélectionnant les propriétés souhaitées, puis les transférer les données dans un fichier texte. Nous pouvons alors utiliser PowerShell pour lire le fichier texte et placer les machines virtuelles dans un tableau (array). Nous pouvons boucler à travers le tableau et effectuer une action. Nous ajoutons ci-dessous 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 “

Edition gratuite de NAKIVO Backup & Replication : téléchargez et sauvegardez vos machines virtuelles VMware.

Ressources

Il y a beaucoup de bonnes ressources sur le Web, y compris des sites de blog personnels, de la documentation officielle, des exemples de code, etc. Ce que j’ai trouvé, c’est que si vous pouvez penser à quelque chose que vous voulez faire, il y a probablement quelqu’un qui a déjà écrit une ligne de code PowerCLI qui le fera. Heureusement, vous pouvez souvent 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, vous apprenez également PowerCLI et son fonctionnement, ainsi que comment modifier le code pour exécuter la tâche à accomplir.

Il y a aussi des tonnes de livres avec des scripts et des exemples de script qui peuvent être disséqués et modifiés. En plus, il y a la communauté des administrateurs VMware qui, pour la plupart, sont heureux de partager leurs connaissances avec quelqu’un d’autre sur la voie de la maîtrise de PowerCLI. Contactez les membres de votre communauté pour obtenir de l’aide avec des détails ou des principes généraux.

Idées

PowerCLI est très puissant. Nous n’avons fait qu’effleurer la surface dans les exemples ci-dessus. Toutes les tâches que vous effectuez de manière répétitive ou qui sont encombrantes dans le client Web sont de bonnes candidates pour l’écriture de scripts avec PowerCLI. En fait, c’est comme ça que la plupart des gens apprennent les fonctionnalités de PowerCLI : ils ont une tâche qui devrait s’effectuer automatiquement ou une action basée sur d’autres actions de vSphere, ou encore d’autres répétitives bien adaptées à l’écriture de scripts. Le meilleur moyen d’apprendre PowerCLI est de le télécharger, de l’installer et de commencer à l’utiliser dans un environnement de laboratoire. La puissance réelle d’un environnement VMware vSphere n’est débloquée que lorsque vous voyez le potentiel de l’utilisation de l’automatisation pour prendre le contrôle de vSphere. Alors, commencez à écrire des scripts avec PowerCLI et vous ne regarderez jamais en arrière !

Essayer NAKIVO Backup & Replication

Essayer NAKIVO Backup & Replication

Découvrez toutes les fonctionnalités de protection des données avec un essai gratuit de 15 jours, sans carte de crédit ni limitations.

Les gens qui ont consulté cet article ont également lu