Bonjour,

je voudrais que l'utilisateur puisse exprimer un choix par une liste déroulante (aujourd'hui, autant de choix, autant de scripts).
J'ai donc recherché un script de liste déroulante :
Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#Ouvre une fenêtre.
[reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
$form1 = New-Object Windows.Forms.Form
$form1.text = "Contrôles"             
$form1.Size = New-Object System.Drawing.Size(300,200)
#Liste déroulante (ComboBox).
$liste1 = New-Object System.Windows.Forms.Combobox
$liste1.Location = New-Object Drawing.Point 20,20
$liste1.Size = New-Object System.Drawing.Size(250,30)
$liste1.DropDownStyle = "DropDownList"
$liste1.Items.AddRange(("1","2","3","4"))
$liste1.SelectedIndex = 0
#Attache le contrôle à la fenêtre
$form1.controls.add($liste1)
#Affiche le tout.
$form1.ShowDialog()
#Affiche la sélection.
write-host "ComboBox = " $liste1.Text
#Fin.

Ce script fonctionne bien si je l'exécute seul mais plus si je l'insère dans mon script :
Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 Write-Host "Hello, World"
 
#vider le contenu des 2 fichiers, s'ils existent
#$strFileName="C:\Users\SESA27384\Desktop\AD\SESAOK.csv"
if (test-path "C:\Users\SESA27384\Desktop\AD\SESAOK.csv") {clear-content C:\Users\SESA27384\Desktop\AD\SESAOK.csv}
#$strFileName="C:\Users\SESA27384\Desktop\AD\SESANOK.csv"
if (test-path "C:\Users\SESA27384\Desktop\AD\SESANOK.csv") {clear-content C:\Users\SESA27384\Desktop\AD\SESANOK.csv}
 
#création des 2 tables pour les logs (à faire avant le foreach)
$sesaNOK=@()
$sesaOK=@()
 
#import du fichier csv à une seule colonne
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
 
$objForm = New-Object System.Windows.Forms.OpenFileDialog
$objForm.InitialDirectory = "c:\"
$objForm.Title = "Selectionner un fichier :"
$objForm.FilterIndex = 3
$Show = $objForm.ShowDialog()
 
If ($Show -eq "Cancel")
{
"Annulé par l'utilisateur"
}
Else
{
write-host $objForm.FileName
}
$path=$objForm.FileName
 #$path = "C:\Users\SESA27384\Desktop\AD\testunecolonne2.csv"
$csv = Import-Csv -path $path
foreach($line in $csv)
{ 
    $columnvalue = $line.name
 
 
    $data = @()
    $domains = "gad.schneider-electric.com","eur.gad.schneider-electric.com","apa.gad.schneider-electric.com","nam.gad.schneider-electric.com","gmea.gad.schneider-electric.com"
    foreach($domain in $domains)
    {
         $data += Get-ADUser -filter "((EmployeeID -like '$columnvalue') -OR (name -like '$columnvalue')) -AND (enabled -eq '$true') " -Server $domain 
    }
    [bool]$data
    if ($data) { Write-Host "Insert $columnvalue"
 
 
    #Ouvre une fenêtre.
    [reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
    $form1 = New-Object Windows.Forms.Form
    $form1.text = "Contrôles"             
    $form1.Size = New-Object System.Drawing.Size(300,200)
    #Liste déroulante (ComboBox).
    $liste1 = New-Object System.Windows.Forms.Combobox
    $liste1.Location = New-Object Drawing.Point 20,20
    $liste1.Size = New-Object System.Drawing.Size(250,30)
    $liste1.DropDownStyle = "DropDownList"
    $liste1.Items.AddRange(("1","2","3","4"))
    $liste1.SelectedIndex = 0
    #Attache le contrôle à la fenêtre
    $form1.controls.add($liste1)
    #Affiche le tout.
    $form1.ShowDialog()
    #Affiche la sélection.
    write-host "ComboBox = " $liste1.Text
    #Fin.
 
 
    Add-ADGroupMember "CN=GAD-SU-NextGenPDM_NonPROD,OU=Access Management,OU=Groups,DC=gad,DC=schneider-electric,DC=com" -server gad.schneider-electric.com -Member $data
    $sesaOK +=$line   #si $data existe, on a inséré le SESA et ajoût de la ligne (donc le SESA) ds la variable $sesaOK
    # ces 4 lignes, pour mémoire : 
    #foreach ($User in $data)    #on explore la variable $data{
    # Write-Host $user.SamAccountName   #pour chq ligne, on sélectionne la propriété SamAccountName (qui contient le SESA)
    # $New=$User|Select-Object SamAccountName   #construire un objet avec une seule propriété
    # $New | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESAOK.csv -Append   #export de cet objet
    #}
    }
    if (!$data) { Write-Host "Entry Not Found $columnvalue" 
    $sesaNOK +=$line     #SESA pas inséré donc ajoût de la ligne (donc le SESA) ds la variable $sesaNOK
    }
} 
#export des 2 variables ds les 2 fichiers de log
$sesaNOK | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESANOK.csv
 
$sesaOK  | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESAOK.csv

Il n'y a pas de message d'erreur mais le script ne termine jamais. Ca vient de la ligne 63 qui affiche la liste déroulante car si je la commente, le script se termine bien mais on ne peut plus choisir ! (Evidemment, les 1, 2, 3, 4 je les changerai). Pourquoi ça ne marche plus ?