preloader
8 April 2011 / #Powercli #Vcenter

Mise à jour des CustomFields

post-thumb

Les CustomFields sont des champs personnalisés au niveau de vCenter qui permettent de définir des entrées supplémentaires par type d’objet (Global | Virtual Machine | Host).

Le menu pour accéder aux Customfields se trouve dans la console du vCenter en faisant Administration > Custom Fields

customfields_03

Dans notre cas, nous avons un champ personnalisé **IP** qui est remplie automatiquement lors du déploiement de la machine virtuelle avec l’adresse IP de la machine virtuelle (logique ^^).

Nous avons eu besoin à un certains moment de changer certaines adresses IP au niveau des machines virtuelles, donc le CustomField n’était plus à jour. Comme d’habitude, pour faire des opérations de masse, la méthode dite du cliquou-cliquou (très appréciée de notre ami Reichstag ^^) ou le PowerCLI.

Voici donc un petit script (ou plutôt OneLiner) PowerCLI qui montre une mise à jour massive de CustomField :

ForEach ($vm in (Get-View -ViewType VirtualMachine) { $vm | Select @{N="name";E={ $_.Name }}, @{N="ipField";E={($vm.customvalue | Where { $_.Key -eq (($vm.AvailableField | Where { $_.Name -eq "IP" }).Key)}).Value }},@{N="ipGuest";E={ $_.guest.ipAddress }} | ?{ ($_.ipField -ne $_.ipGuest) -And ($_.ipGuest -ne "0.0.0.0") -And ($_.ipGuest -ne $null) -And ($_.ipGuest -notmatch "^169.254.") } | %{$vm.setCustomValue("IP",$_.ipGuest)}}

Et au final, un petit script qui fait le boulot qu’on lui demande :

customvalue_04


> Frederic MARTIN