From 3d28c398c147f0f6e046fd762dabf8635713e82c Mon Sep 17 00:00:00 2001
From: Ichbinus <151060943+Ichbinus@users.noreply.github.com>
Date: Wed, 22 Nov 2023 14:48:52 +0100
Subject: [PATCH] Add files via upload
---
Liste_VM.xml | 103 ++
test-2-module_hyper-V-boucles_runspaces.ps1 | 1045 +++++++++++++++++++
2 files changed, 1148 insertions(+)
create mode 100644 Liste_VM.xml
create mode 100644 test-2-module_hyper-V-boucles_runspaces.ps1
diff --git a/Liste_VM.xml b/Liste_VM.xml
new file mode 100644
index 0000000..b172b18
--- /dev/null
+++ b/Liste_VM.xml
@@ -0,0 +1,103 @@
+
+
+
+ SRV-VRM-DDC-001
+ 192.168.44.30
+ Debian 12
+ N.A
+ oui
+ non
+ non
+ non
+
+
+ SRV-VRM-DDC-002
+ 192.168.44.31
+ Debian 12
+ Postgres 13
+ oui
+ non
+ oui
+ non
+
+
+ SRV-VRM-OXA-001
+ 192.168.44.32
+ Debian 12
+ Postgres 13
+ non
+ oui
+ non
+ oui
+
+
+ SRV-VRM-OXA-002
+ 192.168.44.33
+ Debian 12
+ Postgres 13
+ non
+ non
+ oui
+ non
+
+
+ SRV-VRM-ORA-001
+ 192.168.44.34
+ Oracle-linux 8.8
+ Oracle 21 xe
+ non
+ non
+ non
+ non
+
+
+ SRV-VRM-OXA-003
+ 192.168.44.35
+ Windows Server 2022
+ Oracle 21 xe
+ non
+ oui
+ non
+ oui
+
+
+ SRV-VRM-VPN-001
+ 192.168.44.36
+ Windows Server 2022
+ N.A
+ non
+ non
+ non
+ non
+
+
+ SRV-VRM-SUP-002
+ 192.168.44.37
+ Windows Server 2022
+ N.A
+ non
+ non
+ non
+ non
+
+
+ SRV-VRM-GNA-001
+ 192.168.44.38
+ Debian 12
+ Postgres 13
+ non
+ non
+ oui
+ non
+
+
+ SRV-VRM-GNA-002
+ 192.168.44.39
+ Debian 12
+ Postgres 13
+ non
+ non
+ oui
+ non
+
+
\ No newline at end of file
diff --git a/test-2-module_hyper-V-boucles_runspaces.ps1 b/test-2-module_hyper-V-boucles_runspaces.ps1
new file mode 100644
index 0000000..5521b92
--- /dev/null
+++ b/test-2-module_hyper-V-boucles_runspaces.ps1
@@ -0,0 +1,1045 @@
+################################################################################################################################################
+################################################################################################################################################
+################################################# Assembly nécessaire pour la fenêtre graphique ################################################
+################################################################################################################################################
+################################################################################################################################################
+Add-Type -AssemblyName PresentationFramework
+Add-Type -AssemblyName System.Windows.Forms
+Add-Type -AssemblyName PresentationCore
+Add-Type -AssemblyName WindowsBase
+# .Net methods for hiding/showing the console in the background
+Add-Type -Name Window -Namespace Console -MemberDefinition '
+[DllImport("Kernel32.dll")]
+public static extern IntPtr GetConsoleWindow();
+
+[DllImport("user32.dll")]
+public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow);
+'
+
+################################################################################################################################################
+################################################################################################################################################
+############################################################### 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
+
+
+################################################################################################################################################
+################################################################################################################################################
+############################## Déclaration de la Hash table qui sera synchronisée entre les différents runspaces ###############################
+################################################################################################################################################
+################################################################################################################################################
+$syncHash = [hashtable]::Synchronized(@{})
+
+
+################################################################################################################################################
+################################################################################################################################################
+############################################ Déclaration du premier runspace pour l'interface graphique ########################################
+################################################################################################################################################
+################################################################################################################################################
+$newRunspace =[runspacefactory]::CreateRunspace()
+$newRunspace.ApartmentState = "STA" ## Le STA est là pour l'interface en WP
+$newRunspace.ThreadOptions = "ReuseThread"
+$newRunspace.Open()
+$newRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
+$psCmd = [PowerShell]::Create().AddScript({
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ############################################ Déclaration du code XAML de l'interface graphique WPF #############################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ [xml]$Fenetre_principale = @"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+"@
+
+ ##Intégration du code XAML à la hash table
+ $FormFenetre_principale = (New-Object System.Xml.XmlNodeReader $Fenetre_principale)
+ $global:syncHash.Window = [Windows.Markup.XamlReader]::Load($FormFenetre_principale)
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ################################################## initialisation des variables nécessaires ####################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+
+ ## déclaration des contrôles
+ $global:syncHash.Datagrid_Connexion = $global:syncHash.Window.FindName("ConnexionGrid")
+ $global:syncHash.Datagrid_Snapshot = $global:syncHash.Window.FindName("SnapeshotGrid")
+
+ $global:syncHash.BTN_Start = $global:syncHash.Window.FindName("Start")
+ $global:syncHash.BTN_Stop = $global:syncHash.Window.FindName("Stop")
+ $global:syncHash.BTN_Start_machine = $global:syncHash.Window.FindName("Start_machine")
+ $global:syncHash.BTN_reboot_machine = $global:syncHash.Window.FindName("Reboot_machine")
+ $global:syncHash.BTN_rename_machine = $global:syncHash.Window.FindName("Rename_machine")
+ $global:syncHash.BTN_shutdown_machine = $global:syncHash.Window.FindName("shutdown_machine")
+ $global:syncHash.BTN_ajout_machine = $global:syncHash.Window.FindName("ajout_machine")
+ $global:syncHash.BTN_Remove_machine = $global:syncHash.Window.FindName("Remove_machine")
+ $global:syncHash.BTN_Reboot_service = $global:syncHash.Window.FindName("Reboot_service")
+ $global:syncHash.BTN_list_snap = $global:syncHash.Window.FindName("list_snap")
+ $global:syncHash.BTN_faire_snap = $global:syncHash.Window.FindName("faire_snap")
+ $global:syncHash.BTN_restore_snap = $global:syncHash.Window.FindName("restore_snap")
+ $global:syncHash.BTN_suppr_snap = $global:syncHash.Window.FindName("suppr_snap")
+ $global:syncHash.BTN_rename_snap = $global:syncHash.Window.FindName("rename_snap")
+
+ ## déclaration des variables
+ $global:syncHash.serveur_vm = "srvvm3","srvvm4"
+ $global:syncHash.Liste_vm = 'C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Liste_VM.xml'
+ $global:syncHash.BTN_Start.IsEnabled =$true
+ $global:syncHash.BTN_Stop.IsEnabled = $false
+ $global:syncHash.tests_en_cours = $false
+ $global:syncHash.logfilepath = "C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Logs_supervision _vm_support.log"
+ $global:syncHash.todaysdate = Get-Date -Format "MM-dd-yyyy-hh-mm-ss"
+
+ #Déclaration de fonctions
+ function WriteToLogFile ($message)
+ {
+ (Get-Date).ToString() +" - "+ $message >> $syncHash.logfilepath
+ }
+ if(Test-Path $syncHash.logfilepath)
+ {
+ Remove-Item $syncHash.logfilepath
+ }
+
+ function refresh_liste_snapshot
+ {
+ $syncHash.Datagrid_Snapshot.Items.Clear() #=> vidange du datagrid avant chaque requète
+ $syncHash.Datagrid_Snapshot.Items.Refresh() #=> vidange du datagrid avant chaque requète
+ foreach ($selected_item in $syncHash.Datagrid_Connexion.SelectedItems)
+ {
+ $nom_machine = $selected_item.Serveur
+ WriteToLogFile $nom_machine
+ $list_snap = Get-VMSnapshot -ComputerName $global:syncHash.serveur_vm -VMName $nom_machine | Select-Object -Property CreationTime,Name,VMName
+ WriteToLogFile $list_snap
+ ForEach ($Snap in $list_snap)
+ {
+ $Snap_Valeur = New-Object PSObject
+ $Snap_Valeur = $Snap_Valeur | Add-Member NoteProperty VM_snapshot $Snap.VMName -passthru
+ $Snap_Valeur = $Snap_Valeur | Add-Member NoteProperty date_snapshot $Snap.CreationTime -passthru
+ $Snap_Valeur = $Snap_Valeur | Add-Member NoteProperty nom_snapshot $Snap.Name -passthru
+ $syncHash.Datagrid_Snapshot.Items.Add($Snap_Valeur) > $null
+ WriteToLogFile "MàJ Datagrid_Snapshot ok"
+ }
+ }
+ }
+
+ function suppression_VM_dans_list
+ {
+ # Chargement du fichier XML
+ [xml] $MaJ_Liste_vm = (Get-Content -Path $syncHash.Liste_vm)
+
+ # Suppression des éléments liés à la machine suprimmées
+ $VM_effacee = $MaJ_Liste_vm.Machine.Serveur | Where-Object {$PSItem.Address -eq $nom_machine} #=>récupération des infos de la VM suprimmée
+ $MaJ_Liste_vm.Machine.removeChild($VM_effacee)
+
+ # Sauvegarde des modifications dans le fichier XML
+ $MaJ_Liste_vm.Save($syncHash.Liste_vm)
+ }
+ function Hide-Console
+{
+ $consolePtr = [Console.Window]::GetConsoleWindow()
+ #0 hide
+ [Console.Window]::ShowWindow($consolePtr, 0)
+}
+Hide-Console
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ######################################################### Fermeture de la fenètre ##############################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.Window.Add_Closing({
+ $_.Cancel = $true
+ $Resultat = [System.Windows.Forms.MessageBox]::Show('Voulez-vous fermer lapplication ?', 'Warning', 'YesNo', 'Warning')
+ If ($Resultat -eq 'Yes')
+ {
+ $_.Cancel = $false
+ $syncHash.Window.Close()
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ############################################## Ajout du second runspace au bouton Start ########################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_Start.add_click({
+ #WriteToLogFile "clik start fait"
+ $syncHash.BTN_Start.IsEnabled=$false
+ $syncHash.BTN_Stop.IsEnabled=$true
+ #WriteToLogFile "switch bouton start/stop ok"
+ $global:syncHash.tests_en_cours = $true
+ #WriteToLogFile "variable test_en_cours => true"
+ # Déclaration du second runspace #
+ $MAJ_GUIRunspace =[runspacefactory]::CreateRunspace()
+ $MAJ_GUIRunspace.ApartmentState = "MTA"
+ $MAJ_GUIRunspace.ThreadOptions = "ReuseThread"
+ $MAJ_GUIRunspace.Open()
+ $MAJ_GUIRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
+ #WriteToLogFile "ouverture runspace enfant ok"
+ $psScript = [PowerShell]::Create().AddScript({
+ ## Corps du runspace
+
+ $MachinesXML = [xml](get-content $syncHash.Liste_vm )
+ $Liste_Machines = $MachinesXML.Machine.Serveur
+ while ($syncHash.tests_en_cours -like $true) {
+ $syncHash.Datagrid_Connexion.Items.Clear()
+ $syncHash.Datagrid_Connexion.Items.Refresh()
+ #$log_raz_datagrid = "RAZ Datagrid_Connexion ok"
+ #$log_raz_datagrid |Add-Content -Path "C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Logs_supervision _vm_support.log"
+ #$log_lancement_boucle = "lancement boucle de test"
+ #$log_lancement_boucle |Add-Content -Path "C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Logs_supervision _vm_support.log"
+ ForEach ($Machine in $Liste_Machines)
+ {
+ $Test = Get-VM -ComputerName $syncHash.serveur_vm -Name $Machine.Address
+ #$log_test_fait = "test fait"
+ #$log_test_fait |Add-Content -Path "C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Logs_supervision _vm_support.log"
+ #$serveurvm |Add-Content -Path "C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Logs_supervision _vm_support.log"
+ #$Machine.Address |Add-Content -Path "C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Logs_supervision _vm_support.log"
+ $Test |Add-Content -Path "C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Logs_supervision _vm_support.log"
+
+ $Machine_Valeur = New-Object PSObject
+ $Machine_Valeur = $Machine_Valeur | Add-Member NoteProperty Serveur $Machine.Address -passthru
+ $Machine_Valeur = $Machine_Valeur | Add-Member NoteProperty Ip $Machine.Ip -passthru
+ $Machine_Valeur = $Machine_Valeur | Add-Member NoteProperty OS $Machine.OS -passthru
+ $Machine_Valeur = $Machine_Valeur | Add-Member NoteProperty State $Test.State -passthru
+ $Machine_Valeur = $Machine_Valeur | Add-Member NoteProperty BDD $Machine.BDD -passthru
+ $Machine_Valeur = $Machine_Valeur | Add-Member NoteProperty DDC $Machine.DDC -passthru
+ $Machine_Valeur = $Machine_Valeur | Add-Member NoteProperty Oxalis $Machine.Oxalis -passthru
+ $Machine_Valeur = $Machine_Valeur | Add-Member NoteProperty Gnau $Machine.Gnau -passthru
+ $Machine_Valeur = $Machine_Valeur | Add-Member NoteProperty Gnaubo $Machine.Gnaubo -passthru
+ #$Machine_Valeur |Add-Content -Path "C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Logs_supervision _vm_support.log"
+ $global:syncHash.Window.Dispatcher.invoke([action]{
+ $syncHash.Datagrid_Connexion.Items.Add($Machine_Valeur) > $null
+
+ })
+ #$Machine_Valeur |Add-Content -Path "C:\Users\maxime.tertrais\Desktop\Supervision_powershell_VM\interface_(ping_et_reboot-shutdown)\Logs_supervision _vm_support.log"
+ }
+ Start-Sleep -Seconds 5
+ }
+ })
+ $psScript.Runspace = $MAJ_GUIRunspace
+ $psScript.BeginInvoke() | Out-Null
+ })
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ #################################################### Arrêt des tests de dispo VM ###############################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_Stop.add_click({
+ $syncHash.BTN_Start.IsEnabled=$true
+ $syncHash.BTN_Stop.IsEnabled=$false
+ $global:syncHash.tests_en_cours = $false
+ $psScript.Runspace = $MAJ_GUIRunspace
+ $psScript.EndInvoke($null)
+ $MAJ_GUIRunspace.Close()
+ })
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ######################################################### Reboot machine #######################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_reboot_machine.add_click({
+ if ($global:syncHash.Datagrid_Connexion.SelectedIndex -ne "-1")
+ {
+ foreach ($selected_item in $global:syncHash.Datagrid_Connexion.SelectedItems)
+ {
+ $nom_machine = $selected_item.Serveur
+ Restart-VM -ComputerName $syncHash.serveur_vm -Name $nom_machine -Force
+ }
+ }else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucune VM de sélectionné', 'Warning', 'ok', 'Warning')
+
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ########################################################## Ajout machine #######################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_ajout_machine.add_click({
+ ## début définition pop-up d'ajout machine à la liste de test ##
+ Add-Type -AssemblyName System.Windows.Forms
+ Add-Type -AssemblyName System.Drawing
+
+ $form_ajout_vm = New-Object System.Windows.Forms.Form
+ $form_ajout_vm.Text = "Ajout VM - Support"
+ $form_ajout_vm.Size = New-Object System.Drawing.Size(310,370)
+ $form_ajout_vm.StartPosition = "CenterScreen"
+
+ $label = New-Object System.Windows.Forms.Label
+ $label.Location = New-Object System.Drawing.Point(40,10)
+ $label.Size = New-Object System.Drawing.Size(110,20)
+ $label.Text = "Merci de préciser les points suivants :"
+ $form_ajout_vm.Controls.Add($label)
+
+ $label_nom_vm = New-Object System.Windows.Forms.Label
+ $label_nom_vm.Location = New-Object System.Drawing.Point(10,49)
+ $label_nom_vm.Size = New-Object System.Drawing.Size(96,23)
+ $label_nom_vm.Text = "Nom de la VM : "
+ $form_ajout_vm.Controls.Add($label_nom_vm)
+ $textbox_nom_vm = New-Object System.Windows.Forms.TextBox
+ $textbox_nom_vm.Location = New-Object System.Drawing.Point(111,49)
+ $textbox_nom_vm.Size = New-Object System.Drawing.Size(171,23)
+ $textbox_nom_vm.Text = "SRV-VRM-XXX-XXX"
+ $form_ajout_vm.Controls.Add($textbox_nom_vm)
+
+ $label_IP_vm = New-Object System.Windows.Forms.Label
+ $label_IP_vm.Location = New-Object System.Drawing.Point(10,78)
+ $label_IP_vm.Size = New-Object System.Drawing.Size(96,23)
+ $label_IP_vm.Text = "IP de la VM : "
+ $form_ajout_vm.Controls.Add($label_IP_vm)
+ $textbox_IP_vm = New-Object System.Windows.Forms.TextBox
+ $textbox_IP_vm.Location = New-Object System.Drawing.Point(111,78)
+ $textbox_IP_vm.Size = New-Object System.Drawing.Size(171,23)
+ $textbox_IP_vm.Text = "XXX.XXX.XXX.XXX"
+ $form_ajout_vm.Controls.Add($textbox_IP_vm)
+
+ $label_OS_vm = New-Object System.Windows.Forms.Label
+ $label_OS_vm.Location = New-Object System.Drawing.Point(10,106)
+ $label_OS_vm.Size = New-Object System.Drawing.Size(96,23)
+ $label_OS_vm.Text = "OS de la VM : "
+ $form_ajout_vm.Controls.Add($label_OS_vm)
+ $combobox_os_vm = New-Object System.Windows.Forms.ComboBox
+ $combobox_os_vm.Location = New-Object System.Drawing.Point(111,106)
+ $combobox_os_vm.Size = New-Object System.Drawing.Size(171,23)
+ $combobox_os_vm.Items.Add("Debian 12")
+ $combobox_os_vm.Items.Add("Windows Server 2022")
+ $combobox_os_vm.Items.Add("Oracle-linux 8.8")
+ $form_ajout_vm.Controls.Add($combobox_os_vm)
+
+ $label_BDD_vm = New-Object System.Windows.Forms.Label
+ $label_BDD_vm.Location = New-Object System.Drawing.Point(10,134)
+ $label_BDD_vm.Size = New-Object System.Drawing.Size(142,23)
+ $label_BDD_vm.Text = "Type de BDD de la VM : "
+ $form_ajout_vm.Controls.Add($label_BDD_vm)
+ $combobox_BDD_vm = New-Object System.Windows.Forms.ComboBox
+ $combobox_BDD_vm.Location = New-Object System.Drawing.Point(146,134)
+ $combobox_BDD_vm.Size = New-Object System.Drawing.Size(136,23)
+ $combobox_BDD_vm.Items.Add("Oracle 21 xe")
+ $combobox_BDD_vm.Items.Add("Postgres 13")
+ $combobox_BDD_vm.Items.Add("N.A")
+ $form_ajout_vm.Controls.Add($combobox_BDD_vm)
+
+ $label_DDC_vm = New-Object System.Windows.Forms.Label
+ $label_DDC_vm.Location = New-Object System.Drawing.Point(10,162)
+ $label_DDC_vm.Size = New-Object System.Drawing.Size(142,23)
+ $label_DDC_vm.Text = "DDC installé?"
+ $form_ajout_vm.Controls.Add($label_DDC_vm)
+ $combobox_DDC_vm = New-Object System.Windows.Forms.ComboBox
+ $combobox_DDC_vm.Location = New-Object System.Drawing.Point(146,162)
+ $combobox_DDC_vm.Size = New-Object System.Drawing.Size(136,23)
+ $combobox_DDC_vm.Items.Add("oui")
+ $combobox_DDC_vm.Items.Add("non")
+ $form_ajout_vm.Controls.Add($combobox_DDC_vm)
+
+ $label_Oxalis_vm = New-Object System.Windows.Forms.Label
+ $label_Oxalis_vm.Location = New-Object System.Drawing.Point(10,190)
+ $label_Oxalis_vm.Size = New-Object System.Drawing.Size(142,23)
+ $label_Oxalis_vm.Text = "Oxalis installé?"
+ $form_ajout_vm.Controls.Add($label_Oxalis_vm)
+ $combobox_Oxalis_vm = New-Object System.Windows.Forms.ComboBox
+ $combobox_Oxalis_vm.Location = New-Object System.Drawing.Point(146,190)
+ $combobox_Oxalis_vm.Size = New-Object System.Drawing.Size(136,23)
+ $combobox_Oxalis_vm.Items.Add("oui")
+ $combobox_Oxalis_vm.Items.Add("non")
+ $form_ajout_vm.Controls.Add($combobox_Oxalis_vm)
+
+ $label_GNAU_vm = New-Object System.Windows.Forms.Label
+ $label_GNAU_vm.Location = New-Object System.Drawing.Point(10,218)
+ $label_GNAU_vm.Size = New-Object System.Drawing.Size(142,23)
+ $label_GNAU_vm.Text = "GNAU installé?"
+ $form_ajout_vm.Controls.Add($label_GNAU_vm)
+ $combobox_GNAU_vm = New-Object System.Windows.Forms.ComboBox
+ $combobox_GNAU_vm.Location = New-Object System.Drawing.Point(146,218)
+ $combobox_GNAU_vm.Size = New-Object System.Drawing.Size(136,23)
+ $combobox_GNAU_vm.Items.Add("oui")
+ $combobox_GNAU_vm.Items.Add("non")
+ $form_ajout_vm.Controls.Add($combobox_GNAU_vm)
+
+ $label_GNAUBO_vm = New-Object System.Windows.Forms.Label
+ $label_GNAUBO_vm.Location = New-Object System.Drawing.Point(10,246)
+ $label_GNAUBO_vm.Size = New-Object System.Drawing.Size(142,23)
+ $label_GNAUBO_vm.Text = "GNAUBO installé?"
+ $form_ajout_vm.Controls.Add($label_GNAUBO_vm)
+ $combobox_GNAUBO_vm = New-Object System.Windows.Forms.ComboBox
+ $combobox_GNAUBO_vm.Location = New-Object System.Drawing.Point(146,246)
+ $combobox_GNAUBO_vm.Size = New-Object System.Drawing.Size(136,23)
+ $combobox_GNAUBO_vm.Items.Add("oui")
+ $combobox_GNAUBO_vm.Items.Add("non")
+ $form_ajout_vm.Controls.Add($combobox_GNAUBO_vm)
+
+ $boutton_ajout_vm = New-Object System.Windows.Forms.Button
+ $boutton_ajout_vm.Location = New-Object System.Drawing.Point(10,285)
+ $boutton_ajout_vm.Size = New-Object System.Drawing.Size(130,23)
+ $boutton_ajout_vm.Text = "Ajouter à la liste"
+ $boutton_ajout_vm.DialogResult = [System.Windows.Forms.DialogResult]::OK
+ $form_ajout_vm.AcceptButton = $boutton_ajout_vm
+ $form_ajout_vm.Controls.Add($boutton_ajout_vm)
+
+ $boutton_annuler = New-Object System.Windows.Forms.Button
+ $boutton_annuler.Location = New-Object System.Drawing.Point(152,285)
+ $boutton_annuler.Size = New-Object System.Drawing.Size(130,23)
+ $boutton_annuler.Text = "Annuler"
+ $boutton_annuler.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
+ $form_ajout_vm.AcceptButton = $boutton_annuler
+ $form_ajout_vm.Controls.Add($boutton_annuler)
+
+ $form_ajout_vm.Topmost = $True
+
+ $result = $form_ajout_vm.ShowDialog()
+ ## fin définition pop-up d'ajout machine à la liste de test ##
+ if ($result -eq [System.Windows.Forms.DialogResult]::OK)
+ {
+ $Address_new_vm = $textbox_nom_vm.Text
+ $IP_new_vm = $textbox_IP_vm.Text
+ $OS_new_vm = $combobox_os_vm.SelectedItem
+ $BDD_new_vm = $combobox_BDD_vm.SelectedItem
+ $DDC_new_vm = $combobox_DDC_vm.SelectedItem
+ $Oxalis_new_vm = $combobox_Oxalis_vm.SelectedItem
+ $GNAU_new_vm = $combobox_GNAU_vm.SelectedItem
+ $GNAUBO_new_vm = $combobox_GNAUBO_vm.SelectedItem
+
+ [xml]$listing_vm = Get-Content $syncHash.Liste_vm
+ $nouvelle_vm=$listing_vm.Machine.AppendChild($listing_vm.CreateElement("Serveur")); #=> création du noeud "Serveur"
+
+ $Address_vm = $nouvelle_vm.AppendChild($listing_vm.CreateElement("Address")); #=> création de l'élément Address
+ $Address_vm_Value = $Address_vm.AppendChild($listing_vm.CreateTextNode($Address_new_vm)); #=> ajout de l'information liée à l'adresse
+ $IP_vm = $nouvelle_vm.AppendChild($listing_vm.CreateElement("Ip"));
+ $IP_vm_Value = $IP_vm.AppendChild($listing_vm.CreateTextNode($IP_new_vm));
+ $OS_vm = $nouvelle_vm.AppendChild($listing_vm.CreateElement("OS"));
+ $OS_vm_Value = $OS_vm.AppendChild($listing_vm.CreateTextNode($OS_new_vm));
+ $BDD_vm= $nouvelle_vm.AppendChild($listing_vm.CreateElement("BDD"));
+ $BDD_vm_Value = $BDD_vm.AppendChild($listing_vm.CreateTextNode($BDD_new_vm));
+ $DDC_vm = $nouvelle_vm.AppendChild($listing_vm.CreateElement("DDC"));
+ $DDC_vm_Value = $DDC_vm.AppendChild($listing_vm.CreateTextNode($DDC_new_vm));
+ $Oxalis_vm = $nouvelle_vm.AppendChild($listing_vm.CreateElement("oxalis"));
+ $Oxalis_vm_Value = $Oxalis_vm.AppendChild($listing_vm.CreateTextNode($Oxalis_new_vm));
+ $GNAU_vm = $nouvelle_vm.AppendChild($listing_vm.CreateElement("gnau"));
+ $GNAU_vm_Value = $GNAU_vm.AppendChild($listing_vm.CreateTextNode($GNAU_new_vm));
+ $GNAUBO_vm = $nouvelle_vm.AppendChild($listing_vm.CreateElement("gnaubo"));
+ $GNAUBO_vm_Value = $GNAUBO_vm.AppendChild($listing_vm.CreateTextNode($GNAUBO_new_vm));
+ $nouvelle_vm.setattribute("Serveur",$Address_new_vm)
+
+ $listing_vm.Save($syncHash.Liste_vm) #=> enregistrement nouvelle vm
+ }
+ else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Ajout nouvelle VM annulé', 'Warning', 'ok', 'Warning')
+
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ######################################################## Démarrer machine ######################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_Start_machine.add_click({
+ if ($global:syncHash.Datagrid_Connexion.SelectedIndex -ne "-1")
+ {
+ foreach ($selected_item in $global:syncHash.Datagrid_Connexion.SelectedItems)
+ {
+ $nom_machine = $selected_item.Serveur
+ }
+ ## début définition pop-up de démarrage Machine ##
+ Add-Type -AssemblyName System.Windows.Forms
+ Add-Type -AssemblyName System.Drawing
+
+ $form = New-Object System.Windows.Forms.Form
+ $form.Text = "Démarrage VM - Support"
+ $form.Size = New-Object System.Drawing.Size(300,150)
+ $form.StartPosition = "CenterScreen"
+
+ $OKButton = New-Object System.Windows.Forms.Button
+ $OKButton.Location = New-Object System.Drawing.Point(70,60)
+ $OKButton.Size = New-Object System.Drawing.Size(75,23)
+ $OKButton.Text = "OK"
+ $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
+ $form.AcceptButton = $OKButton
+ $form.Controls.Add($OKButton)
+
+ $CancelButton = New-Object System.Windows.Forms.Button
+ $CancelButton.Location = New-Object System.Drawing.Point(155,60)
+ $CancelButton.Size = New-Object System.Drawing.Size(75,23)
+ $CancelButton.Text = "Cancel"
+ $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
+ $form.CancelButton = $CancelButton
+ $form.Controls.Add($CancelButton)
+
+ $label = New-Object System.Windows.Forms.Label
+ $label.Location = New-Object System.Drawing.Point(10,20)
+ $label.Size = New-Object System.Drawing.Size(280,20)
+ $label.Text = "Démarrage VM: $nom_machine"
+ $form.Controls.Add($label)
+
+ $form.Topmost = $True
+
+ $result = $form.ShowDialog()
+ ## fin définition pop-up de démarrage Machine ##
+ if ($result -eq [System.Windows.Forms.DialogResult]::OK)
+ {
+ Start-VM -computername $syncHash.serveur_vm -name $nom_machine -Confirm:$false -AsJob
+ }
+ }else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucune VM de sélectionné', 'Warning', 'ok', 'Warning')
+
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ########################################################## Arrêt machine #######################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_shutdown_machine.add_click({
+ if ($global:syncHash.Datagrid_Connexion.SelectedIndex -ne "-1")
+ {
+ foreach ($selected_item in $global:syncHash.Datagrid_Connexion.SelectedItems)
+ {
+ $nom_machine = $selected_item.Serveur
+ }
+ ## début définition pop-up d'arrêt Machine ##
+ Add-Type -AssemblyName System.Windows.Forms
+ Add-Type -AssemblyName System.Drawing
+
+ $form = New-Object System.Windows.Forms.Form
+ $form.Text = "Arrêt VM - Support"
+ $form.Size = New-Object System.Drawing.Size(300,150)
+ $form.StartPosition = "CenterScreen"
+
+ $OKButton = New-Object System.Windows.Forms.Button
+ $OKButton.Location = New-Object System.Drawing.Point(70,60)
+ $OKButton.Size = New-Object System.Drawing.Size(75,23)
+ $OKButton.Text = "OK"
+ $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
+ $form.AcceptButton = $OKButton
+ $form.Controls.Add($OKButton)
+
+ $CancelButton = New-Object System.Windows.Forms.Button
+ $CancelButton.Location = New-Object System.Drawing.Point(155,60)
+ $CancelButton.Size = New-Object System.Drawing.Size(75,23)
+ $CancelButton.Text = "Cancel"
+ $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
+ $form.CancelButton = $CancelButton
+ $form.Controls.Add($CancelButton)
+
+ $label = New-Object System.Windows.Forms.Label
+ $label.Location = New-Object System.Drawing.Point(10,20)
+ $label.Size = New-Object System.Drawing.Size(280,20)
+ $label.Text = "Arrêts VM: $nom_machine"
+ $form.Controls.Add($label)
+
+ $form.Topmost = $True
+
+ $result = $form.ShowDialog()
+ ## fin définition pop-up d'arrêt Machine ##
+ if ($result -eq [System.Windows.Forms.DialogResult]::OK)
+ {
+ Stop-VM -computername $syncHash.serveur_vm -name $nom_machine -Force
+ }
+ }else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucune VM de sélectionné', 'Warning', 'ok', 'Warning')
+
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ######################################################### Renommer machine #####################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_rename_machine.add_click({
+ if ($global:syncHash.Datagrid_Connexion.SelectedIndex -ne "-1")
+ {
+ foreach ($selected_item in $global:syncHash.Datagrid_Connexion.SelectedItems)
+ {
+ $nom_machine = $selected_item.Serveur
+ }
+ ## début définition pop-up de renommage Machine ##
+ Add-Type -AssemblyName System.Windows.Forms
+ Add-Type -AssemblyName System.Drawing
+
+ $form = New-Object System.Windows.Forms.Form
+ $form.Text = "Ajouter VM - Support"
+ $form.Size = New-Object System.Drawing.Size(300,200)
+ $form.StartPosition = "CenterScreen"
+
+ $OKButton = New-Object System.Windows.Forms.Button
+ $OKButton.Location = New-Object System.Drawing.Point(75,120)
+ $OKButton.Size = New-Object System.Drawing.Size(75,23)
+ $OKButton.Text = "OK"
+ $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
+ $form.AcceptButton = $OKButton
+ $form.Controls.Add($OKButton)
+
+ $CancelButton = New-Object System.Windows.Forms.Button
+ $CancelButton.Location = New-Object System.Drawing.Point(150,120)
+ $CancelButton.Size = New-Object System.Drawing.Size(75,23)
+ $CancelButton.Text = "Cancel"
+ $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
+ $form.CancelButton = $CancelButton
+ $form.Controls.Add($CancelButton)
+
+ $label = New-Object System.Windows.Forms.Label
+ $label.Location = New-Object System.Drawing.Point(10,20)
+ $label.Size = New-Object System.Drawing.Size(280,20)
+ $label.Text = "Saisir le nouveau nom de la VM:"
+ $form.Controls.Add($label)
+
+ $new_name_vm = New-Object System.Windows.Forms.TextBox
+ $new_name_vm.Location = New-Object System.Drawing.Point(10,40)
+ $new_name_vm.Size = New-Object System.Drawing.Size(260,20)
+ $form.Controls.Add($new_name_vm)
+
+ $form.Topmost = $True
+
+ $form.Add_Shown({$new_name_vm.Select()})
+ $result = $form.ShowDialog()
+ ## fin définition pop-up de renommage Machine ##
+ if ($result -eq [System.Windows.Forms.DialogResult]::OK)
+ {
+ $NewNamevm = $new_name_vm.Text
+ Rename-VM -computername $syncHash.serveur_vm -name $nom_machine -NewName $NewNamevm
+ # Chargement du fichier XML
+ [xml] $MaJ_Liste_vm = (Get-Content -Path $syncHash.Liste_vm)
+ # Mise à jour des valeurs
+ $VM_modifiee = $MaJ_Liste_vm.SelectNodes("//Serveur") | where {$PSItem.Nom -eq $nom_machine} #=> on se place sur le noeud du serveur renommé
+ $VM_modifiee.Nom = $NewNamevm
+ $VM_modifiee.Address = $NewNamevm
+ # Sauvegarde des modifications dans le fichier XML
+ $MaJ_Liste_vm.Save($syncHash.Liste_vm)
+ }
+ }
+ else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucune VM de sélectionné', 'Warning', 'ok', 'Warning')
+
+ }
+ })
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ######################################################### Supprimmer machine ###################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_Remove_machine.add_click({
+ if ($global:syncHash.Datagrid_Connexion.SelectedIndex -ne "-1")
+ {
+ foreach ($selected_item in $global:syncHash.Datagrid_Connexion.SelectedItems)
+ {
+ $nom_machine = $selected_item.Serveur
+ }
+ ## début définition pop-up de suppression machine ##
+ Add-Type -AssemblyName System.Windows.Forms
+ Add-Type -AssemblyName System.Drawing
+
+ $form_Remove_machine = New-Object System.Windows.Forms.Form
+ $form_Remove_machine.Text = "Suprimmer VM - Support"
+ $form_Remove_machine.Size = New-Object System.Drawing.Size(300,200)
+ $form_Remove_machine.StartPosition = "CenterScreen"
+
+ $OKButton = New-Object System.Windows.Forms.Button
+ $OKButton.Location = New-Object System.Drawing.Point(75,120)
+ $OKButton.Size = New-Object System.Drawing.Size(75,23)
+ $OKButton.Text = "OK"
+ $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
+ $form_Remove_machine.AcceptButton = $OKButton
+ $form_Remove_machine.Controls.Add($OKButton)
+
+ $CancelButton = New-Object System.Windows.Forms.Button
+ $CancelButton.Location = New-Object System.Drawing.Point(150,120)
+ $CancelButton.Size = New-Object System.Drawing.Size(75,23)
+ $CancelButton.Text = "Cancel"
+ $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
+ $form_Remove_machine.CancelButton = $CancelButton
+ $form_Remove_machine.Controls.Add($CancelButton)
+
+ $label = New-Object System.Windows.Forms.Label
+ $label.Location = New-Object System.Drawing.Point(10,20)
+ $label.Size = New-Object System.Drawing.Size(280,20)
+ $label.Text = "Suppression VM: $nom_machine"
+ $form_Remove_machine.Controls.Add($label)
+
+ $form_Remove_machine.Topmost = $True
+
+ $result = $form_Remove_machine.ShowDialog()
+ ## fin définition pop-up de suppression machine ##
+ if ($result -eq [System.Windows.Forms.DialogResult]::OK)
+ {
+ Remove-VM -computername $syncHash.serveur_vm -Name $nom_machine -Force
+ suppression_VM_dans_list
+ }
+ }
+ else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucune VM de sélectionné', 'Warning', 'ok', 'Warning')
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ################################################### Récupération liste Snapshot VM #############################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_list_snap.add_click({
+ WriteToLogFile "click BTN_list_snap ok"
+ $syncHash.Datagrid_Snapshot.Items.Clear() #=> vidange du datagrid avant chaque requète
+ $syncHash.Datagrid_Snapshot.Items.Refresh() #=> vidange du datagrid avant chaque requète
+ WriteToLogFile "Vidange Datagrid_Snapshot ok"
+ if ($syncHash.Datagrid_Connexion.SelectedIndex -ne "-1")
+ {
+ WriteToLogFile "selection Datagrid_Snapshot ok"
+ refresh_liste_snapshot
+ }else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucune VM de sélectionné', 'Warning', 'ok', 'Warning')
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ########################################################### Faire Snapshot #####################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_faire_snap.add_click({
+ if ($global:syncHash.Datagrid_Connexion.SelectedItems -ne "-1")
+ {
+ foreach ($selected_item in $global:syncHash.Datagrid_Connexion.SelectedItems)
+ {
+ $nom_machine = $selected_item.Serveur
+
+ ## début définition pop-up de création Snapshot ##
+ Add-Type -AssemblyName System.Windows.Forms
+ Add-Type -AssemblyName System.Drawing
+
+ $form_create_snap = New-Object System.Windows.Forms.Form
+ $form_create_snap.Text = "Création d'un Snapshot - Support"
+ $form_create_snap.Size = New-Object System.Drawing.Size(360,150)
+ $form_create_snap.StartPosition = "CenterScreen"
+
+ $OKButton = New-Object System.Windows.Forms.Button
+ $OKButton.Location = New-Object System.Drawing.Point(95,80)
+ $OKButton.Size = New-Object System.Drawing.Size(75,23)
+ $OKButton.Text = "OK"
+ $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
+ $form_create_snap.AcceptButton = $OKButton
+ $form_create_snap.Controls.Add($OKButton)
+
+ $CancelButton = New-Object System.Windows.Forms.Button
+ $CancelButton.Location = New-Object System.Drawing.Point(175,80)
+ $CancelButton.Size = New-Object System.Drawing.Size(75,23)
+ $CancelButton.Text = "Cancel"
+ $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
+ $form_create_snap.CancelButton = $CancelButton
+ $form_create_snap.Controls.Add($CancelButton)
+
+ $label = New-Object System.Windows.Forms.Label
+ $label.Location = New-Object System.Drawing.Point(5,20)
+ $label.Size = New-Object System.Drawing.Size(350,20)
+ $label.Text = "Nom du nouveau Snapshot pour la VM $nom_machine :"
+ $form_create_snap.Controls.Add($label)
+
+ $new_snap = New-Object System.Windows.Forms.TextBox
+ $new_snap.Location = New-Object System.Drawing.Point(10,50)
+ $new_snap.Size = New-Object System.Drawing.Size(320,20)
+ $form_create_snap.Controls.Add($new_snap)
+
+ $form_create_snap.Topmost = $True
+ $result = $form_create_snap.ShowDialog()
+ ## fin définition pop-up de création Snapshot ##
+ if ($result -eq [System.Windows.Forms.DialogResult]::OK)
+ {
+ $newsnap = $new_snap.Text
+ Checkpoint-VM -computername $syncHash.serveur_vm -SnapshotName $newsnap -Name $nom_machine -Confirm:$false
+ refresh_liste_snapshot
+ }
+ }
+ }else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucun Snapshot de sélectionné!', 'Warning', 'ok', 'Warning')
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ######################################################### Restorer Snapshot ####################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_restore_snap.add_click({
+ if ($global:syncHash.Datagrid_Snapshot.SelectedItems -ne "-1")
+ {
+ foreach ($snapshot in $global:syncHash.Datagrid_Snapshot.SelectedItems)
+ {
+ $nom_Snap = $snapshot.nom_snapshot
+ $date_Snap = $snapshot.date_snapshot
+ $VM_Snap = $snapshot.VM_snapshot
+ ## début définition pop-up de restauration Snapshot ##
+ Add-Type -AssemblyName System.Windows.Forms
+ Add-Type -AssemblyName System.Drawing
+
+ $form_restore_snap = New-Object System.Windows.Forms.Form
+ $form_restore_snap.Text = "Retourner à un Snapshot - Support"
+ $form_restore_snap.Size = New-Object System.Drawing.Size(400,150)
+ $form_restore_snap.StartPosition = "CenterScreen"
+
+ $OKButton = New-Object System.Windows.Forms.Button
+ $OKButton.Location = New-Object System.Drawing.Point(75,60)
+ $OKButton.Size = New-Object System.Drawing.Size(75,23)
+ $OKButton.Text = "OK"
+ $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
+ $form_restore_snap.AcceptButton = $OKButton
+ $form_restore_snap.Controls.Add($OKButton)
+
+ $CancelButton = New-Object System.Windows.Forms.Button
+ $CancelButton.Location = New-Object System.Drawing.Point(150,60)
+ $CancelButton.Size = New-Object System.Drawing.Size(75,23)
+ $CancelButton.Text = "Cancel"
+ $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
+ $form_restore_snap.CancelButton = $CancelButton
+ $form_restore_snap.Controls.Add($CancelButton)
+
+ $label = New-Object System.Windows.Forms.Label
+ $label.Location = New-Object System.Drawing.Point(10,20)
+ $label.Size = New-Object System.Drawing.Size(380,20)
+ $label.Text = "Retour au Snapshot $nom_Snap réaliser le $date_Snap ?"
+ $form_restore_snap.Controls.Add($label)
+
+ $form_restore_snap.Topmost = $True
+ $result = $form_restore_snap.ShowDialog()
+ ## fin définition pop-up de restauration Snapshot ##
+ if ($result -eq [System.Windows.Forms.DialogResult]::OK)
+ {
+ Restore-VMSnapshot -computername $global:syncHash.serveur_vm -name $nom_Snap -VMName $VM_Snap -Confirm:$false
+ }
+ }
+ }else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucun Snapshot de sélectionné!', 'Warning', 'ok', 'Warning')
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ######################################################### Suprimmer Snapshot ###################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_suppr_snap.add_click({
+ if ($global:syncHash.Datagrid_Snapshot.SelectedItems -ne "-1")
+ {
+ foreach ($snapshot in $global:syncHash.Datagrid_Snapshot.SelectedItems)
+ {
+ $nom_Snap = $snapshot.nom_snapshot
+ $date_Snap = $snapshot.date_snapshot
+ $VM_Snap = $snapshot.VM_snapshot
+ ## début définition pop-up de suppression Snapshot ##
+ Add-Type -AssemblyName System.Windows.Forms
+ Add-Type -AssemblyName System.Drawing
+
+ $form_suppr_snap = New-Object System.Windows.Forms.Form
+ $form_suppr_snap.Text = "Suppression Snapshot - Support"
+ $form_suppr_snap.Size = New-Object System.Drawing.Size(400,150)
+ $form_suppr_snap.StartPosition = "CenterScreen"
+
+ $OKButton = New-Object System.Windows.Forms.Button
+ $OKButton.Location = New-Object System.Drawing.Point(75,60)
+ $OKButton.Size = New-Object System.Drawing.Size(75,23)
+ $OKButton.Text = "OK"
+ $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
+ $form_suppr_snap.AcceptButton = $OKButton
+ $form_suppr_snap.Controls.Add($OKButton)
+
+ $CancelButton = New-Object System.Windows.Forms.Button
+ $CancelButton.Location = New-Object System.Drawing.Point(150,60)
+ $CancelButton.Size = New-Object System.Drawing.Size(75,23)
+ $CancelButton.Text = "Cancel"
+ $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
+ $form_suppr_snap.CancelButton = $CancelButton
+ $form_suppr_snap.Controls.Add($CancelButton)
+
+ $label = New-Object System.Windows.Forms.Label
+ $label.Location = New-Object System.Drawing.Point(10,20)
+ $label.Size = New-Object System.Drawing.Size(380,20)
+ $label.Text = "Supprimmer le Snapshot $nom_Snap réaliser le $date_Snap ?"
+ $form_suppr_snap.Controls.Add($label)
+
+ $form_suppr_snap.Topmost = $True
+ $result = $form_suppr_snap.ShowDialog()
+ ## fin définition pop-up de suppression Snapshot ##
+ if ($result -eq [System.Windows.Forms.DialogResult]::OK)
+ {
+ Remove-VMSnapshot -computername $global:syncHash.serveur_vm -name $nom_Snap -VMName $VM_Snap
+ refresh_liste_snapshot
+ }
+ }
+ }else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucun Snapshot de sélectionné!', 'Warning', 'ok', 'Warning')
+ }
+ })
+
+
+ ################################################################################################################################################
+ ################################################################################################################################################
+ ######################################################### Renommer Snapshot ####################################################################
+ ################################################################################################################################################
+ ################################################################################################################################################
+ $syncHash.BTN_rename_snap.add_click({
+ if ($global:syncHash.Datagrid_Snapshot.SelectedItems -ne "-1")
+ {
+ foreach ($snapshot in $global:syncHash.Datagrid_Snapshot.SelectedItems)
+ {
+ $nom_Snap = $snapshot.nom_snapshot
+ $VM_Snap = $snapshot.VM_snapshot
+ ## début définition pop-up de renommage Snapshot ##
+ Add-Type -AssemblyName System.Windows.Forms
+ Add-Type -AssemblyName System.Drawing
+
+ $form_rename_snap = New-Object System.Windows.Forms.Form
+ $form_rename_snap.Text = "Suppression Snapshot - Support"
+ $form_rename_snap.Size = New-Object System.Drawing.Size(300,200)
+ $form_rename_snap.StartPosition = "CenterScreen"
+
+ $OKButton = New-Object System.Windows.Forms.Button
+ $OKButton.Location = New-Object System.Drawing.Point(75,120)
+ $OKButton.Size = New-Object System.Drawing.Size(75,23)
+ $OKButton.Text = "OK"
+ $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
+ $form_rename_snap.AcceptButton = $OKButton
+ $form_rename_snap.Controls.Add($OKButton)
+
+ $CancelButton = New-Object System.Windows.Forms.Button
+ $CancelButton.Location = New-Object System.Drawing.Point(150,120)
+ $CancelButton.Size = New-Object System.Drawing.Size(75,23)
+ $CancelButton.Text = "Cancel"
+ $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
+ $form_rename_snap.CancelButton = $CancelButton
+ $form_rename_snap.Controls.Add($CancelButton)
+
+ $label = New-Object System.Windows.Forms.Label
+ $label.Location = New-Object System.Drawing.Point(10,20)
+ $label.Size = New-Object System.Drawing.Size(280,20)
+ $label.Text = "Saisir le nouveau nom du Snapshot:"
+ $form_rename_snap.Controls.Add($label)
+
+ $new_name_snap = New-Object System.Windows.Forms.TextBox
+ $new_name_snap.Location = New-Object System.Drawing.Point(10,40)
+ $new_name_snap.Size = New-Object System.Drawing.Size(260,20)
+ $form_rename_snap.Controls.Add($new_name_snap)
+
+ $form_rename_snap.Topmost = $True
+
+ $form_rename_snap.Add_Shown({$new_name_snap.Select()})
+ $result = $form_rename_snap.ShowDialog()
+ ## fin définition pop-up de renommage Snapshot ##
+
+ if ($result -eq [System.Windows.Forms.DialogResult]::OK)
+ {
+ $NewNameSnap = $new_name_snap.Text
+ Rename-VMSnapshot -computername $global:syncHash.serveur_vm -name $nom_Snap -VMName $VM_Snap -NewName $NewNameSnap
+ refresh_liste_snapshot
+ }
+ }
+ }else
+ {
+ [System.Windows.Forms.MessageBox]::Show('Aucun Snapshot de sélectionné!', 'Warning', 'ok', 'Warning')
+ }
+ })
+
+
+ $syncHash.Window.ShowDialog() | Out-Null
+})
+$psCmd.Runspace = $newRunspace
+$psCmd.BeginInvoke() | Out-Null