diff --git a/supervision_v4.0.ps1 b/supervision_v4.0.ps1 index 4cb995e..cd96f0d 100644 --- a/supervision_v4.0.ps1 +++ b/supervision_v4.0.ps1 @@ -5,21 +5,47 @@ Interface de supervision des machines virtuelles du service support Auteur : Maxime Tertrais Date creation : 27/11/2023 /Dernier modificateur : Maxime Tertrais -Date derniere modification : +Date derniere modification :04/12/2023 Ce script permet de superviser les machines virtuelles du service support: - gestion des machines: - - démarrer, arréter les machines + - démarrer, arréter, rebooter les machines - renommer les machines (attention le renommage ne concerne que le nom dans l'hyper-V, l'ID du serveur au niveau du domaine ne change pas) - - -legende : + - Ajouter une machine à la liste des machine à tester + - Supprimer une machine de l'hyper-V et de la liste des machines à tester + - Gestion des snapshots des machines + - listing, création, renommage, suppression des snapshots + - restauration de snapshots + - Reboot du service jetty (operis) de la machine sélectionnée +Pré-requis : + - Droit d'accès: + - l'utilisateur doit faire partis du groupe de sécurité GSG-Administrateur_hyper-V (=> voir avec le service infra pour ajouter un utilisateur au groupe) + - rendre disponible l'optional feature de windows Hyper-V: + - dans la recherche windows : fonctionnalitées facultatives + - cliquer sur "plus de fonctionnalités windows" (en bas de la liste) + - se loguer en admin local (au minimum) + - chercher dans le pop-up le module hyper-v pour powershell + - Hyper-V + - Outils d'administration Hyper-V + - Module Hyper-V pour Windows Powershell + - cocher la case correspondante et valider sur ok, un redémarrage est peut-être nécessaire + +Legende : # : ligne de commentaire ### : ligne de debug (les logs) -.EXAMPLE -exemple1 : .\supervision .NOTES +Fonctionnement du script en mode fenètré. + Des améliorations pourraient etre apportées : - - + - Gestion de l'installation du module PowerShell Hyper-V par GPO. + - Arrêt du défilement des résultats de tests. + +Les datagrid ne permettent de sélectionner qu'une seule ligne à la fois, donc on ne peut effectuer des actions que sur un objet à la fois. +Ceci-dit, toutes les actions suite à clics commencent par un "foreach" pour permettre de réaliser les actions sur plusieurs ligne des datagrids si on souhaite autoriser cette manipulation. +Attention, un ajustement des requètes / affichage sera peut-être nécessaire. + +.EXAMPLE +N.A #> ################################################################################################################################################ @@ -54,37 +80,23 @@ try { $assemblyLoaded = $loadedAssemblies.FullName -contains $assembly if ($null -ne $assemblyLoaded) { $logassembly = "L'assembly '$assembly' est chargé correctement." - WriteToLogFile0 $logassembly + ###WriteToLogFile0 $logassembly } else { $logassembly = "L'assembly '$assembly' n'est pas chargé correctement." - WriteToLogFile0 $logassembly + ###WriteToLogFile0 $logassembly } } $loaded_assembly_list = [System.AppDomain]::CurrentDomain.GetAssemblies()| Select-Object -Property FullName foreach ($loaded_assembly in $loaded_assembly_list) { $logloadedassembly = "L'assembly suivante est chargé: '$loaded_assembly'" - WriteToLogFile0 $logloadedassembly + ###WriteToLogFile0 $logloadedassembly } } catch { $logwpf = "ligne 55 - une exeption s'est produite $_.Exception.Message " - WriteToLogFile0 $logwpf + ###WriteToLogFile0 $logwpf } -################################################################################################################################################ -################################################################################################################################################ -############################################################### prérequis ###################################################################### -################################################################################################################################################ -################################################################################################################################################ - -## rendre disponible l'optional feature de windows Hyper-V: -# => dans la recherche windows : fonctionnalitées facultatives -# => se loguer en admin local -# => chercher dans le pop-up le module hyper-v pour powershell -# => Hyper-V -# =>Outils d'administration Hyper-V -# => Module Hyper-V pour Windows Powershell -# => cocher la case correspondante et valider sur ok, un redémarrage est peut-être nécessaire ################################################################################################################################################ @@ -99,15 +111,15 @@ try { # test de la bonne création de la table de hachage synchronisé if ($syncHash -is [System.Collections.Hashtable] -and $syncHash -is [System.Collections.ICollection]) { $loghashtabl = "La création de l'hashtable synchronisé s'est déroulée correctement." - WriteToLogFile0 $loghashtabl + ###WriteToLogFile0 $loghashtabl } else { $loghashtabl = "Il y a eu un problème lors de la création de l'hashtable synchronisé." - WriteToLogFile0 $loghashtabl + ###WriteToLogFile0 $loghashtabl } } catch { $loghashtabl = "ligne 93 - une exeption s'est produite $_.Exception.Message " - WriteToLogFile0 $loghashtabl + ###WriteToLogFile0 $loghashtabl } ################################################################################################################################################ @@ -125,33 +137,33 @@ try { if ($newRunspace.ApartmentState -like "STA") { $logrunspace1 = "le runspace créé avec un ApartmentState correct en STA ." - WriteToLogFile0 $logrunspace1 + ###WriteToLogFile0 $logrunspace1 }else { $logrunspace1 = "le runspace créé avec un ApartmentState incorrect ." - WriteToLogFile0 $logrunspace1 + ###WriteToLogFile0 $logrunspace1 } if ($newRunspace.ThreadOptions -like "ReuseThread") { $logrunspace2 = "le runspace créé avec un ThreadOptions correct en ReuseThread ." - WriteToLogFile0 $logrunspace2 + ###WriteToLogFile0 $logrunspace2 }else { $logrunspace2 = "le runspace créé avec un ThreadOptions incorrect ." - WriteToLogFile0 $logrunspace2 + ###WriteToLogFile0 $logrunspace2 } # vérification de la variable sesion state proxy $testSessionStateProxy = $newRunspace.SessionStateProxy.GetVariable("syncHash") if ($null -ne $testSessionStateProxy) { $logrunspace3 = "le runspace créé avec un SessionStateProxy correct en associé à synchash ." - WriteToLogFile0 $logrunspace3 + ###WriteToLogFile0 $logrunspace3 }else { $logrunspace3 = "le runspace créé avec un SessionStateProxy incorrect ." - WriteToLogFile0 $logrunspace3 + ###WriteToLogFile0 $logrunspace3 } } catch { $logdeclarunspace = "ligne 137 - une exeption s'est produite $_.Exception.Message " - WriteToLogFile0 $logdeclarunspace + ###WriteToLogFile0 $logdeclarunspace } $psCmd = [PowerShell]::Create().AddScript({ @@ -171,9 +183,9 @@ $psCmd = [PowerShell]::Create().AddScript({