Question ListView + ContextMenu + SelectedItems

Plus d'informations
il y a 10 ans 3 mois #21192 par Pijuant
Bonjour,

Je travaille actuellement sur un script permettant la gestion centralisée des Pare-Feu Windows de servers.
Cependant je reste bloqué sur l'utilisation de \"SelectedItems\".
La liste affiche l'ensemble des serveurs avec les états des trois profils de pare-feu et les règles d'entrée et de sortie (Bloque, filtre ou autorise).
J'ai créé un context menu pour que lors d'un clic droit j'ai trois propositions [Domaine,Privé,Public] et dans chacune d'elle j'ai deux possibilités [Activer,Désactiver]
Cependant je n'arrive pas a récupérer la valeur d'une colonne de la ligne sélectionné lors d'un clic dans le contextMenu.
Voici quelques lignes de code de mon script
[code:1]$Manage_Firewall_Status_ListView_Etat = New-Object System.Windows.Forms.ListView
$Manage_Firewall_Status_ListView_Etat_ContxtMenu = New-Object System.Windows.Forms.ContextMenu
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain = New-Object System.Windows.Forms.MenuItem
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private = New-Object System.Windows.Forms.MenuItem
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public = New-Object System.Windows.Forms.MenuItem

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Nom = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Nom.text = \"Nom\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Nom.Width = 150

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain.text = \"Etat Profil Domaine\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain.Width = 150

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain_Entrees = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain_Entrees.text = \"Etat Entrees Domaine\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain_Entrees.Width = 150

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain_Sorties = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain_Sorties.text = \"Etat Sorties Domaine\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain_Sorties.Width = 150

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Private = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Private.text = \"Profil Privé\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Private.Width = 150

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Private_Entree = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Private_Entree.text = \"Etat Entrees Privé\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Private_Entree.Width = 150

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Private_Sorties = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Private_Sorties.text = \"Etat Sorties Privé\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Private_Sorties.Width = 150

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Public = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Public.text = \"Profil Public\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Public.Width = 150

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Public_Entrees = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Public_Entrees.text = \"Etat Entrees Public\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Public_Entrees.Width = 150

$Manage_Firewall_Status_ListView_Etat_Col_Stat_Public_Sorties = New-Object System.Windows.Forms.ColumnHeader
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Public_Sorties.text = \"Etat Sorties Public\"
$Manage_Firewall_Status_ListView_Etat_Col_Stat_Public_Sorties.Width = 150

$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Nom) | out-null
$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain) | out-null
$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain_Entrees) | out-null
$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Domain_Sorties) | out-null
$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Private) | out-null
$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Private_Entree) | out-null
$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Private_Sorties) | out-null
$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Public) | out-null
$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Public_Entrees) | out-null
$Manage_Firewall_Status_ListView_Etat.Columns.Add($Manage_Firewall_Status_ListView_Etat_Col_Stat_Public_Sorties) | out-null

# Manage_Firewall_Status_ListView_Etat

$Manage_Firewall_Status_ListView_Etat.Location = new-object System.Drawing.Size(0, 100)
$Manage_Firewall_Status_ListView_Etat.Size = New-Object System.Drawing.Size(1550, 800)
$Manage_Firewall_Status_ListView_Etat.View = 'Details'
$Manage_Firewall_Status_ListView_Etat.FullRowSelect = $true
$Manage_Firewall_Status_ListView_Etat.Contextmenu = $Manage_Firewall_Status_ListView_Etat_ContxtMenu
$Manage_Firewall_Status_ListView_Etat.Activation
$Manage_Firewall_Status_GroupBox.Controls.Add($Manage_Firewall_Status_ListView_Etat)

## Menu Domaine
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain.text = \"Profil Domaine\"
##
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain_Activer = New-Object System.Windows.Forms.MenuItem
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain_Activer.text = \"Activer\"
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain_Activer.Add_click({})
##
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain_Désactiver = New-Object System.Windows.Forms.MenuItem
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain_Désactiver.text = \"Désactiver\"
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain_Désactiver.Add_click({})
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain.MenuItems.Add($Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain_Désactiver)
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain.MenuItems.Add($Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain_Activer)

## Menu Privé
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private.text = \"Profil Privé\"
##
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private_Activer = New-Object System.Windows.Forms.MenuItem
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private_Activer.text = \"Activer\"
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private_Activer.Add_click({})
##
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private_Désactiver = New-Object System.Windows.Forms.MenuItem
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private_Désactiver.text = \"Désactiver\"
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private_Désactiver.Add_click({})
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private.MenuItems.Add($Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private_Activer)
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private.MenuItems.Add($Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private_Désactiver)

## Menu Public
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public.text = \"Profil Public\"
##
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public_Activer = New-Object System.Windows.Forms.MenuItem
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public_Activer.text = \"Activer\"
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public_Activer.Add_click({})
##
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public_Désactiver = New-Object System.Windows.Forms.MenuItem
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public_Désactiver.text = \"Désactiver\"
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public_Désactiver.Add_click({})
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public.MenuItems.Add($Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public_Activer)
$Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public.MenuItems.Add($Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public_Désactiver)

$Manage_Firewall_Status_ListView_Etat_ContxtMenu.MenuItems.Add($Manage_Firewall_Status_ListView_Etat_ContxtMenu_Domain)
$Manage_Firewall_Status_ListView_Etat_ContxtMenu.MenuItems.Add($Manage_Firewall_Status_ListView_Etat_ContxtMenu_Private)
$Manage_Firewall_Status_ListView_Etat_ContxtMenu.MenuItems.Add($Manage_Firewall_Status_ListView_Etat_ContxtMenu_Public)
$Manage_Firewall_Status_ListView_Etat.Items.Clear()
#Manage_Firewall_Status_GroupBox
$Manage_Firewall_Status_GroupBox.Font = New-Object System.Drawing.Font(\"Segoe UI\", 9.75, ([System.Drawing.FontStyle]([System.Drawing.FontStyle]::Bold, [System.Drawing.FontStyle]::Italic)), [System.Drawing.GraphicsUnit]::«»Point)
$Manage_Firewall_Status_GroupBox.Location = New-Object System.Drawing.Point(320, 100)
$Manage_Firewall_Status_GroupBox.Name = \"Confirm_AddUser_GroupBox_Mail\"
$Manage_Firewall_Status_GroupBox.Size = New-Object System.Drawing.Size(1550, 900)
$Manage_Firewall_Status_GroupBox.TabIndex = 11
$Manage_Firewall_Status_GroupBox.TabStop = $False
$Manage_Firewall_Status_GroupBox.Text = \"\"
$Manage_Firewall_Home_Form.Controls.Add($Manage_Firewall_Status_GroupBox)



$i = 0
foreach ($Server In $List_Servers){
$Manage_Firewall_Home_StatusBar.Text = \"Chargement du profil Public pour le serveur $Server\"
$Status_Public = Get-FirewallStatus -ComputerName $Server -Profil Public
$i++
$Manage_Firewall_Home_ProgressBar.Value = ($i / $List_Servers.count*25)
$Manage_Firewall_Home_StatusBar.Text = \"Chargement du profil Privé pour le serveur $Server\"
$Status_Private = Get-FirewallStatus -ComputerName $Server -Profil Private
$i++
$Manage_Firewall_Home_ProgressBar.Value = ($i / $List_Servers.count*25)
$Manage_Firewall_Home_StatusBar.Text = \"Chargement du profil de Domaine pour le serveur $Server\"
$Status_Domain = Get-FirewallStatus -ComputerName $Server -Profil Domain
$i++
$Manage_Firewall_Home_ProgressBar.Value = ($i / $List_Servers.count*25)
$item1 = New-Object System.Windows.Forms.ListViewItem($Server)
$item1.SubItems.Add($Status_Domain.Status)
$item1.SubItems.Add($Status_Domain.Entree)
$item1.SubItems.Add($Status_Domain.Sortie)
$item1.SubItems.Add($Status_Private.Status)
$item1.SubItems.Add($Status_Private.Entree)
$item1.SubItems.Add($Status_Private.Sortie)
$item1.SubItems.Add($Status_Public.Status)
$item1.SubItems.Add($Status_Public.Entree)
$item1.SubItems.Add($Status_Public.Sortie)
$Manage_Firewall_Status_ListView_Etat.Items.Add($item1)
$i++
$Manage_Firewall_Home_ProgressBar.Value = ($i / $List_Servers.count*25)
}[/code:1]

Et merci pour l'aide!

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.066 secondes
Propulsé par Kunena