6 votes

Définir un CD de démarrage de la machine virtuelle via PowerCLI

J'ai le sentiment furtif que cela peut être un bug, mais je suis définitivement prêt à envisager la possibilité que je fais les choses de travers.

J'ai une machine virtuelle VMware dans $vm, et j'essaie d'assigner un CD de démarrage pour celle-ci. $vm est éteinte.

La méthode documentée semble assez simple:

Set-CDDrive -CD (Get-CDDrive -vm $vm) -IsoPath "[nomdudatastore] \whatever.iso" -StartConnected 1

Maintenant, lorsque je démarre la VM, elle essaye immédiatement de démarrer en mode PXE. J'éteins la machine, et dans le client vSphere, je modifie les propriétés de la VM, je vais à "Lecteur CD/DVD 1", et je vérifie que "État du périphérique" a une coche à côté de "Connecter au démarrage".

Voici la chose folle. Quand je décoche cette case, puis la recoche, ensuite je démarre la VM, elle démarre à partir de l'ISO.

Je l'ai fait encore et encore, avec la console ouverte, avec elle fermée, et à chaque fois, je peux définir le drapeau StartConnected sur l'interface en ligne de commande, et l'interface graphique reflète le réglage, mais seulement après avoir coché manuellement la case ça démarrera réellement à partir de l'ISO.

Y a-t-il une étape que j'oublie de réaliser dans PowerCLI pour que ce réglage "prenne"?

0voto

bentek Points 2175

À partir de la référence en ligne PowerCLI, je vois l'exemple suivant (remplacez la valeur après -ISOPath par votre datastore et le nom/chemin du fichier .iso comme ceci "[votredatastore] IsoFolder\$iso") :

$cd = New-CDDrive -VM $vm -ISOPath "[sof-20666-esx:storage1] ISO\testISO.iso"
Set-CDDrive -CD $cd -StartConnected -Connected

0voto

Le premier backslash dans le ISOPath pourrait bien être le problème. Je fais exactement la même chose dans nos scripts de provisionnement, ça ressemble à ceci :

Obtenir-CDDrive $VM | Set-CDDrive -IsoPath "[DATASTORE] ISO\BOOT.ISO" -StartConnected:$true -Confirm:$false

Aussi, si vous fournissez des valeurs booléennes à des arguments qui acceptent un booléen (comme StartConnected), essayez de prendre l'habitude d'utiliser un deux-points comme dans l'exemple ci-dessus. Si vous avez par hasard un Cmdlet ou une fonction qui accepte plus d'un argument sans nom, votre 1 pourrait être interprété incorrectement comme un nouvel argument dans l'appel de fonction, plutôt que comme la valeur de l'argument que vous aviez l'intention de passer.

Donc, n'utilisez pas -StartConnected 1, mais plutôt -StartConnected:1 ou -StartConnected:$true.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X