Question
Shutdown VM sous Vmware
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 6 ans 4 jours #24305
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Shutdown VM sous Vmware
shinobi écrit:
Avant l'appel de la boucle Do/Until, tu déclares ceci ( c'est du code utilisé par une méthode)
[code:1]
#Note : changer le type PSObject par le type de l'objet VM
[System.Predicate[psobject]] $Predicate={
param($Vm)
Write-Debug \"Vm=$($Vm.powerstate)\"
$Vm.powerstate -eq 'PoweredOff'
}
[/code:1]
Comme indiqué en note, il faut changer le type PSObject par le type de l'objet VM (que tu obtiens par $MyVm.GetType().fullname)
Ensuite tu utilises cette construction :
[code:1]
do {
... traitement du VMFOLDER1 avec 15 VM dedans ..
} until([array]::TrueForAll($VMFOLDER1 , $Predicate))
[/code:1]
Ce n'est pas un soucis, faut juste comprendre ce que tu fais.Désolé je scripte depuis peu
Avant l'appel de la boucle Do/Until, tu déclares ceci ( c'est du code utilisé par une méthode)
[code:1]
#Note : changer le type PSObject par le type de l'objet VM
[System.Predicate[psobject]] $Predicate={
param($Vm)
Write-Debug \"Vm=$($Vm.powerstate)\"
$Vm.powerstate -eq 'PoweredOff'
}
[/code:1]
Comme indiqué en note, il faut changer le type PSObject par le type de l'objet VM (que tu obtiens par $MyVm.GetType().fullname)
Ensuite tu utilises cette construction :
[code:1]
do {
... traitement du VMFOLDER1 avec 15 VM dedans ..
} until([array]::TrueForAll($VMFOLDER1 , $Predicate))
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- MEY Patrick
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 6 ans 3 jours #24306
par MEY Patrick
Réponse de MEY Patrick sur le sujet Re:Shutdown VM sous Vmware
Hello......J'ai planché un peu dessus hier soir 
Je comprends que le -EQ classique va bien pour un tableau et que là il nous faut faire le test à l'intérieur de la boucle.
Ceci afin qu'il sorte de la boucle lorsque tout est en Poweredoff.
Par contre je ne sais pas quoi mettre à la place de psobject (je fais mon boulet lol
)
Entre-temps j'ai juste un peu modifié ma stratégie qui consiste à récupérer toutes les VM de 2 ESX et à y arrêter d'abord les applications avant de sortir de notre fameuse boucle \"array\" puis de lancer une nouvelle boucle qui arrêtera les databases avant de faire enfin un shutdown de mon ESX.
Si j'arrivais à utiliser ton système de boucle je serais le roi
[code:1]
###############################
## STOP Sequence of Room DC1 ##
###############################
#$VMDC1AP VM Applications of DC1
Write-host \"Shutting Down Applications VM on DC1\"
$VMDC1AP = Get-VMHost \"ESX1\",\"ESX3\" | Get-VM | where { $_.Notes -ne 'DB'} | Sort Name
$VMDC1AP | Shutdown-VMGuest
Write-host \"Applications VM on DC1 are shutted down\"
#$VMDC1DB VM Databases of DC1
Write-host \"Shutting Down Databases VM on DC1\"
$VMDC1DB = Get-VMHost \"ESX1\",\"ESX3\" | Get-VM | where { $_.Notes -eq 'DB'} | Sort Name
$VMDC1DB | Shutdown-VMGuest
Write-host \"Databases VM on DC1 are shutted down\"
[/code:1]

Je comprends que le -EQ classique va bien pour un tableau et que là il nous faut faire le test à l'intérieur de la boucle.
Ceci afin qu'il sorte de la boucle lorsque tout est en Poweredoff.
Par contre je ne sais pas quoi mettre à la place de psobject (je fais mon boulet lol

Entre-temps j'ai juste un peu modifié ma stratégie qui consiste à récupérer toutes les VM de 2 ESX et à y arrêter d'abord les applications avant de sortir de notre fameuse boucle \"array\" puis de lancer une nouvelle boucle qui arrêtera les databases avant de faire enfin un shutdown de mon ESX.
Si j'arrivais à utiliser ton système de boucle je serais le roi

[code:1]
###############################
## STOP Sequence of Room DC1 ##
###############################
#$VMDC1AP VM Applications of DC1
Write-host \"Shutting Down Applications VM on DC1\"
$VMDC1AP = Get-VMHost \"ESX1\",\"ESX3\" | Get-VM | where { $_.Notes -ne 'DB'} | Sort Name
$VMDC1AP | Shutdown-VMGuest
Write-host \"Applications VM on DC1 are shutted down\"
#$VMDC1DB VM Databases of DC1
Write-host \"Shutting Down Databases VM on DC1\"
$VMDC1DB = Get-VMHost \"ESX1\",\"ESX3\" | Get-VM | where { $_.Notes -eq 'DB'} | Sort Name
$VMDC1DB | Shutdown-VMGuest
Write-host \"Databases VM on DC1 are shutted down\"
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 6 ans 3 jours #24308
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Shutdown VM sous Vmware
shinobi écrit:
[code:1]$VMDC1AP[0].GetType().FullName[/code:1]
C'est ce type qui porte la propriété PowerState.
C'est nécessaire car la classe utilisée est une classe générique qui,en autre, évite des contrôles de type dans le code :
[code:1][System.Predicate[NomDuTypeManipulé]][/code:1]
Le type des objets que tu manipules dans ton tableau de VM:Par contre je ne sais pas quoi mettre à la place de psobject
[code:1]$VMDC1AP[0].GetType().FullName[/code:1]
C'est ce type qui porte la propriété PowerState.
C'est nécessaire car la classe utilisée est une classe générique qui,en autre, évite des contrôles de type dans le code :
[code:1][System.Predicate[NomDuTypeManipulé]][/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.049 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Shutdown VM sous Vmware