Script paramétrage action start et stop sur hyperV 3

Script paramétrage action start et stop sur hyperV 3 - Infrastructures serveurs - Systèmes & Réseaux Pro

Marsh Posté le 15-03-2013 à 10:41:25    

Bonjour à tous.
 
Nous rencontrons actuellement un petit problème lors de la mise à jour de nos serveurs. Notre parc serveur en branch office est composé d'un serveur hôte abritant X VMs le tout sous Server 2012 ... Hors lors de la mise à jour des systèmes hôte pose problème ... A chaque fois qu'il redémarre, les VM sont mis en état pause, et on se tape une erreur de DB DFS au redémarrage du serveur de fichier ... :S
 
Nous avons donc décidé de modifier les actions automatiques à réaliser lors de l'arrêt du serveur Hôte comme ceci :
- Au démarrage du serveur : Démarrer toutes les VMs
- A l'arrêt du serveur : Arrêter proprement les VMs
 
Oui mais voila ... Cela fais beaucoup de manipulation car nous avons environs 30 serveurs hôtes sur la France. D'autant plus que les action à l'arrêt, ne peuvent être modifiées que lorsque la VM est éteinte...
 
De ce fait j'ai réalisé un petit script ... Il fonctionne bien en TEST, mais avant de le lancer sur de la prod, un petit regard externe ne me dérangerait pas ... Si vous voyez une erreur ou une optimisation à apporter ! JE SUIS PRENEUR ! N'étant pas vraiment un spécialiste du Scripting powershell :
 

Code :
  1. #
  2. # Script de redémarrage de serveurs hôtes HYPERV pour paramétrage action AutomaticStart & AutomaticStop.
  3. # Ce script est testé sur des hyperviseurs en version 3 sur server 2012
  4. # Version : 0.1 | Création Initiale | XXXXXXX
  5. #---------------------------------------------------------------------------------------------------------------------------
  6. # Définitions variables
  7. #
  8. # Variables Fixes
  9. $DateLog = Get-Date -UFormat "%Y_%m_%d"
  10. $Time = get-date -UFormat "%H:%M"
  11. # Variables à modifier selon l'environnement
  12. $file_path = "C:\Apps\Scripts" # Chemin local d'accès au au fichier contenant les HOSTS à redémarrer et contenant les logs à renseigner
  13. $inputfile_name = "hosts.txt" # Nom du fichier à parcourir
  14. $outputfile_log = "shut_log_$datelog.txt" # Création du fichier de log
  15. $mail_recipients = "xxxxx@xxxx.com, yyyyyyy@xxxx.com" # Variable contenant les destinataire du mail contenant le log à séparer par ", "
  16. $mail_subject = "Fichier de log de la tache planifiee de redemarrage des serveur HYPERV" # Sujet du mail contenant les logs
  17. $smtp_server = "10.150.11.142" #Adresse du serveur SMTP pour envoie mail
  18. $mail_from = "xxxx@xxxx.com" # Adresse mail mémettrice du fichier de LOG
  19. # Définition de l'entête du fichier de log
  20. sc $outputfile_log -Value "---- Log name $outputfile_log ----`r`n" -Encoding UTF8
  21. ac $outputfile_log -Value "Heure de lancement du script : $Time" -Encoding UTF8
  22. ac $outputfile_log -Value "Script exécuté depuis : $env:COMPUTERNAME" -Encoding UTF8
  23. ac $outputfile_log -Value "Script exécuté par : $env:USERNAME" -Encoding UTF8
  24. # Fin de l'entête du fichier de LOG
  25. cd $file_path
  26. $inputfile_host = Get-Content $inputfile_name
  27. ForEach ($guest in $inputfile_host) {
  28.     write-host "-------------------------------------------------------------"
  29.     ac $outputfile_log -value "`r`n-------------------------------------------------------------" -Encoding UTF8
  30.     write-host "Redémarrage de $guest :"
  31.     ac $outputfile_log -value "Redémarrade de $guest :" -Encoding UTF8
  32.     write-host "-------------------------------------------------------------"
  33.     ac $outputfile_log -value "-------------------------------------------------------------" -Encoding UTF8
  34.     write-host "VMs présentent sur l'hôte : "
  35.     ac $outputfile_log -value "`r`nVMs présentent sur $guest :" -Encoding UTF8
  36.     $inputrequest_vm = Get-VM -ComputerName $guest
  37.     foreach ($vm in $inputrequest_vm){
  38.         If ($vm.state -eq "Running" ){
  39.             # Actions réalisées si la VM est en état de Marche
  40.             Write-Host " - " $vm.name " / State : " $vm.state -ForegroundColor Red
  41.             ac $outputfile_log -value " - $($vm.name) / State : $($vm.state)" -Encoding UTF8
  42.             $time_temp=get-date
  43.             Write-Host "     o Lancement de la commande d'arrêt de la Machine virtuel ($($time_temp))"
  44.             ac $outputfile_log -value "     o Lancement de la commande d'arrêt de la Machine virtuel ($($time_temp))" -Encoding UTF8
  45.             Stop-VM $vm
  46.             $time_temp=get-date
  47.             Write-Host "     o Le serveur à bien été arrêté ($($time_temp))"
  48.             ac $outputfile_log -value "     o Le serveur à bien été arrêté ($($time_temp))" -Encoding UTF8
  49.             Write-Host "     o Paramétrage des option d'AutomaticStartAction et AutomaticStopAction à Start and ShutDown"
  50.             ac $outputfile_log -value "     o Paramétrage des option d'AutomaticStartAction et AutomaticStopAction à Start and ShutDown" -Encoding UTF8
  51.             set-vm -ComputerName $guest -Name $vm.Name -AutomaticStartAction Start -AutomaticStopAction ShutDown
  52.         } Else {
  53.             # Actions réalisées si la VM est en état STOP
  54.             Write-Host " - " $vm.name " / State : " $vm.state -ForegroundColor Green
  55.             ac $outputfile_log -value " - $($vm.name) / State : $($vm.state)" -Encoding UTF8
  56.             write-host "   La VM est déjà dans un état permettant à l'hote d'être redémarré. Aucune Action n'est requise."
  57.             ac $outputfile_log -value "   La VM est déjà dans un état permettant à l'hote d'être redémarré. Aucune Action n'est requise." -Encoding UTF8
  58.             Write-Host "     o Paramétrage des option d'AutomaticStartAction et AutomaticStopAction à Start and ShutDown"
  59.             ac $outputfile_log -value "     o Paramétrage des option d'AutomaticStartAction et AutomaticStopAction à Start and ShutDown" -Encoding UTF8
  60.             set-vm -ComputerName $guest -Name $vm.Name -AutomaticStartAction Start -AutomaticStopAction ShutDown
  61.         }
  62.     }
  63. Restart-Computer $guest
  64. }
  65. Send-MailMessage -From $mail_from -Subject $mail_subject -To $mail_recipients -Attachments $file_path"\"$outputfile_log  -SmtpServer $smtp_server
  66. #


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
Reply

Marsh Posté le 15-03-2013 à 10:41:25   

Reply

Marsh Posté le 15-03-2013 à 10:59:41    

Ca ressemble plus à du VBScript qu'à du Powershell :/
 
Sers-toi du pipe au lieu de faire des boucles de goret :/

Reply

Marsh Posté le 15-03-2013 à 11:28:53    

Tu peux pas plutôt configurer le start/stop behaviour des VM en cas d'extinction et démarrage de l'hôte ? Mettre les VM en suspend qd le serveur s'arrête sauf celles où c'est problématique, et mettre le démarrage auto des VM ?

Reply

Marsh Posté le 15-03-2013 à 11:40:28    

nebulios a écrit :

Ca ressemble plus à du VBScript qu'à du Powershell :/

 

Sers-toi du pipe au lieu de faire des boucles de goret :/


Comme je le dis ... Je ne suis pas spécialiste ... Mais le pipe ... Comment veux-tu que je me serve d'un pipe pour parcourir mon fichier texte ? J'ai une boucle qui me sert à parcourir les VM

 

edit : 2, j'en ai une aussi pour parcourir le fichier texte :p

Je@nb a écrit :

Tu peux pas plutôt configurer le start/stop behaviour des VM en cas d'extinction et démarrage de l'hôte ? Mettre les VM en suspend qd le serveur s'arrête sauf celles où c'est problématique, et mettre le démarrage auto des VM ?


J'ai l'impression que ce que tu dis c'est ce que je fais :) Dans une VM tu trouves ce paramètre dans Automatic Start Action et automatic Stop Action (rubrique management) ... C'est ça ?

 

Je les mets toutes à Stop car comme cela on profite du redémarrage de l'hôte pour les MAJ des VMs :) C'est surtout que par la suite les gars réfléchirons avant de mettre la machine en prod, à bien paramétrer ce champs ... En gros on ne va le lancer qu'une fois ;)


Message édité par ChaTTon2 le 15-03-2013 à 11:43:58

---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
Reply

Marsh Posté le 15-03-2013 à 11:56:26    

Ah, si tu le lances qu'une fois ok, mais oui c'est bien de ces paramètres que je parle.

Reply

Marsh Posté le 15-03-2013 à 11:59:17    

Je@nb a écrit :

Ah, si tu le lances qu'une fois ok, mais oui c'est bien de ces paramètres que je parle.


"start/stop behaviour " est quand même plus simple à comprendre que mes 200 lignes d'explication :) Vais m'en reservir :p


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed