Flash info

Une frénésie incontrollée poussent certains individus à convertir tous les scripts d'admin en PowerShell. L'un d'eux aurait été apperçu récemment près du campus universitaire de Talence.

 
Accueil arrow News arrow Tâches planifiées Windows et VI Toolkit 1.5
Tâches planifiées Windows et VI Toolkit 1.5
Appréciation des utilisateurs: / 0
FaibleMeilleur 
Écrit par Arnaud Petitjean [MVP]   
26-05-2009
 vmware.jpg

M'étant pris la sévèrement la tête une bonne partie de l'après-midi à essayer d'exécuter un script PowerShell s'appuyant sur le VMWare Infrastructure Tool Kit 1.5 en tant que tâche planifiée, j'ai décidé de prendre mon clavier pour vous en parler un peu. Cela vous évitera peut-être une migraine ?

 

Je travaille actuellement sur un projet de virtualisation du poste de travail (VDI - Virtual Desktop Infrastructure) avec une infrastructure de virtualisation basée sur VMWare ESX 3.5 + Virtual Center + broker VMWARE View. Dans ce mode de fonctionnement j'ai un certain nombre de machines virtuelles (visibles et gérée par le Virtual Center) qui sont chacunes attribuées à un utilisateur et un seul. Le problème c'est que pour savoir qui est l'utilisateur d'une machine il faut aller dans la console d'admin du broker VMWARE View, et il faut le reconnaître c'est un peu galère de devoir se connecter sur le broker pour avoir seulement cette information; ça fait perdre du temps. 

J'ai donc écrit un script (que je publierais par la suite pour ceux que ça intéresse) qui interroge le broker VMWARE View via une requête LDAP; View s'appuyant sur Active Directory Application Mode (ADAM). Une fois les informations glanées sur les utilisateurs des VMs, je renseigne le champ "commentaire" de chaque VM de façon à voir d'un seul coup d'oeil dans la console Virtual Center qui est l'utilisateur de telle ou telle machine virtuelle. Voilà pour le contexte...

Alors retour à cet après-midi : me voilà content, mon script fonctionne parfaitement bien lorsque je le lance dans la console et il ne me reste maintenant plus qu'à le mettre dans une tâche planifiée et l'affaire est dans le sac ! Laughing Et c'est là que la prise de tête commence !!!
Donc voilà qu'en bon administrateur consciencieux je crée un joli compte de service avec un super mot de passe bien compliqué, je donne les permissions applicatives (côté Virtual Center et broker) qui vont bien au compte et lorsque je lance la tâche, elle s'exécute mais ne produit aucun résultat ! En regardant les logs de mon script, je me rend compte qu'il y a un problème d'authentification auprès du Virtual Center lors de l'utilisation de la commande Connect-VIserver. Ni d'une, ni deux je me connecte avec mon compte de service pour voir si j'arrive à exécuter mon script, et là  bizarrement pas de problème d'authentification ça fonctionne ! Je lance manuellement la tâche planifiée toujours avec mon compte de service et là ça marche aussi ! Je me reconnecte avec mon compte admin, je relance la tâche, et là ça marche plus : erreur d'authentification !!! Là je deviens dingue !!! Yell

Bref, je teste tout un tas de choses et au bout d'un moment je décide de capituler et d'aller faire quelques recherches sur le net pour voir si d'autres utilisateurs n'ont pas déjà eu ce problème. Et là la magie d'internet se produisit...!!! Je n'étais pas le seul à avoir ce problème, et quelqu'un avait déjà posé le problème dans le forum VMWARE : Scheduled tasks + credentials not passed to script et la solution se trouvait dans le fil de discussion. Elle a aussi été reprise sur ce Blog : Schedule a VI Toolkit script.

Il s'agit donc d'un bug du VI Toolkit dans sa version 1.5. Afin de le contourner, il faut ajouter au début du script les quelques lignes suivantes :

#FIX FOR TOOLKIT 1.5

$USER = $env:username
$APPPATH = "C:\Documents and Settings\" + $USER + "\Application Data"

#SET THE APPDATA ENVIRONMENT WHEN NEEDED
if ($env:appdata -eq $null -or $env:appdata -eq 0)
{
   $env:appdata = $APPPATH
}

 A en voir le code, il s'agissait d'un problème de valeur de la variable $APPPATH. Mais toujours est-il qu'avec ce petit bout de code ça fonctionne à merveille ! Smile

Voilà j'espère que ça pourra vous être utile et que ça vous évitera de trop vous arracher les cheveux. L'informatique c'est génial, PowerShell c'est fantastique mais les bugs ! Argh les bugs !!! Et ben malheureusement ça fait partie des risques du métier ! Y'a pire... Laughing

 Arnaud

Dernière mise à jour : ( 26-05-2009 )
 
© 2019 PowerShell-Scripting.com