Problématique du jour …
Comment extraire une liste de VM présent sur un vCenter, en ayant 2 critères de tri … Le premier le nombre de vCPU et le deuxième la quantité de RAM …
Ne prendre que les 30 premiers de la liste …
Partant du principe que l’on souhaite avoir une liste dont le résultat contiendra le nom de la VM, le nombre de cpu de la VM, la quantité de mémoire déclaré pour la VM, la commande de base est très simple :
1 |
get-vm | select Name,numcpu,memorygb |
Pour sélectionner les 30 premiers de ce premier résultat on utilise :
1 |
select -first 30 |
à la fin de la première commande … et on placera toujours cette commande à la fin de nos commandes pour obtenir le bon résultat … Si on le place de suite aprés la première commande et qu’ensuite on effectue le tri, ce ne sera pas bon …
1 |
get-vm | select Name,numcpu,memorygb | select -first 30 |
On souhaite avoir les VMs qui ont de déclaré le plus grand de nombre de vCPU classé par ordre décroissant … on va donc utiliser sort-object …
1 |
select Name,numcpu,memorygb | sort-object -Property @{expression='NumCpu';descending=$true} | select -first 30 |
Le résultat est totalement différent de notre première commande …
Deuxième critère de tri sur la mémoire …
j’ai utilisé les raccourcis « e= » à la place de « expression= » et « desc= » à la place de « descending »
1 |
get-vm | select Name,numcpu,memorygb | sort-object -Property @{expression='NumCpu';descending=$true},@{e='MemoryGB';desc=$true} | select -first 30 |
Le résultat noter bien l’apparition d’une VM à 256 Go de RAM … notre tri à correctement fonctionné.
Plus d’informations dans la documentation :
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/sort-object?view=powershell-6