Important Activer un bouton grisé en fin de code

Plus d'informations
il y a 9 ans 4 mois #22886 par Faye
Bonjour à toute la communauté,

J'ai une forme en powershell avec un label et un bouton OK. Au départ le bouton OK est grisé et je veux qu'elle soit active à la fin de l'exécution du code. A quel endroit insérer mon code pour qu'il tourne?A quel moment activé le bouton OK, preuve que notre script a fini de tourner.
Voici le code:

[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\")
#
# Label3
#
$label3 = new-object System.Windows.Forms.Label
$label3.Location = new-object System.Drawing.Point(70, 70)
$label3.Size = new-object System.Drawing.Size(139,13)
$label3.Text = 'Activation en cours.... '
$label3.Font= \"Verdana\"
#
# boutton OK
#
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(120,240)
$OKButton.Size = New-Object System.Drawing.Size(50,20)
$OKButton.Text = \"OK\"
$OKButton.enabled = $false
$OKButton.Add_Click(
{
$label2.Text = \"Activation déroulée avec succès `nVous pouvez à présent quitter \"
$Form2.Close()
}
)
#
# Form2
#
$Form2 = new-object System.Windows.Forms.form
$Form2.ClientSize = new-object System.Drawing.Size(284, 264)
$Form2.Text = \"Progression de l'activation\"
$form2.StartPosition = [System.Windows.Forms.FormStartPosition]::WindowsDefaultLocation


$Form2.Controls.Add($label3)
$Form2.Controls.Add($OKButton)



$Form2.activate()
[void]$Form2.ShowDialog()





$label3.Text = 'Activation finie'
$OKButton.enabled = $true

$OKButton.refresh()

Merci par avance:) !!!

Message édité par: fayem, à: 4/01/17 10:24<br><br>Message édité par: fayem, à: 4/01/17 14:36

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

Plus d'informations
il y a 9 ans 4 mois #22923 par Guillaume
Bonjour,

Ta partie
[code:1]$label3.Text = 'Activation finie'

$OKButton.enabled = $true

$OKButton.refresh()[/code:1]

Doit se trouver avant
[code:1]$Form2.activate()

[void]$Form2.ShowDialog()[/code:1]

Ensuite, tu dois coller une condition, selon ce que tu veux faire, qui doit permettre l'activation de ton bouton OK.

Tu dois donc te retrouver avec :

[code:1]If (condition est vérifiée) {
$label3.Text = 'Activation finie'

$OKButton.enabled = $true

$OKButton.refresh()
}[/code:1]

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

Plus d'informations
il y a 9 ans 4 mois #22969 par Faye
Bonjour Guillaume_F

Merci pour ton aide. J'ai appliqué les modifications telles que vous me les avez décrites.
Cependant c'est la condition qui me pose problème!
Qu'est-ce que je vais mettre dans le If?
J'ai pensé à effectuer un \&quot;wait until previous command finishes\&quot; ou faire un Start-sleep -s 3 àprès léxecution de mon code et mettre dans ma condition le start-sleep

Exemple : If ($startSleep -eq 3)
{
$label3.Text = 'Activation finie'

$OKButton.enabled = $true

$OKButton.refresh()
}

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

Plus d'informations
il y a 9 ans 4 mois #22975 par Guillaume
Ce serait plus simple si tu affichais les commandes que tu veux faire (au moins une partie).

En faisant ce que je t'ai dit, le bouton est actif de suite.

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

Plus d'informations
il y a 9 ans 3 mois #23035 par Faye
Bonjour,
Voici le code, il est un peu long quand même et Merci encore

[code:1]
function LY13_ActivationUsers
{
$resultatTrue = @()
$resultatNULLorFALSE = @()

#Importer les utilisateurs de l'OU
$users=Get-CsADUser -OU \&quot;OU=Utilisateurs,OU=$OU,OU=Directions,DC=efrei,DC=net\&quot;

$userscount=(Get-CsADUser -OU \&quot;OU=Utilisateurs,OU=$OU,OU=Directions,DC=efrei,DC=net\&quot;«»).count

#Import dans une variable des utilisateurs de l'OU ayant déjà Lync
$CsUsers=Get-CsUser -OU \&quot;OU=Utilisateurs,OU=$OU,OU=Directions,DC=efrei,DC=net\&quot;

#Décompte des utilisateurs disposant de Lync avant activation
$CsUsersCount=(Get-CsUser -OU \&quot;OU=Utilisateurs,OU=$OU,OU=Directions,DC=efrei,DC=net\&quot;«»).count

$TotalLyUsers=(Get-CsUser).count #Nombre total d'utilisateurs Lync toutes OU confondues

#Calculer le nombre d'utilisateur dans chaque pool avant activation
$UsersPool1=(get-csuser | Where-Object {$_.registrarpool -match \&quot;pool01-Lync13.apps.efrei.net\&quot;}).count

$UsersPool2=(get-csuser | Where-Object {$_.registrarpool -match \&quot;pool02-Lync13.apps.efrei.net\&quot;}).count

Write-Host -f Magenta \&quot; Nombre d'utilisateurs avant activation sur le pool01 : $UsersPool1 \&quot;
Write-Host -f Cyan \&quot; Nombre d'utilisateurs avant activation sur le pool02 : $UsersPool2 \&quot;
Write-Host -f Yellow \&quot; Nombre d'utilisateurs de l'OU ayant Lync : $CsUsersCount sur $userscount \&quot;
Write-Host -f Green \&quot; Au total, Lync est activée pour $TotalLyUsers utilisateurs \&quot;

Start-Sleep -s 3

#Activer les utilisateurs dans le pool où il y en a le moins
foreach ($element in $users)
{
if ($element.enabled -ne $true) #N'active que les utilisateurs ne disposant pas de Lync
{
if ($UsersPool1 -gt $UsersPool2)
{
Enable-CsUser -Identity $element.UserPrincipalName -RegistrarPool \&quot;pool02-lync13.apps.efrei.net\&quot; -SipAddressType EmailAddress
if($? -eq $true)
{
Write-Host $element.UserPrincipalName \&quot;:\&quot; \&quot;Activé sur pool 02\&quot;
$UsersPool2++
$CsUsersCount++
$TotalLyUsers++
}

}
Else
{
Enable-CsUser -Identity $element.UserPrincipalName -RegistrarPool \&quot;pool01-lync13.apps.efrei.net\&quot; -SipAddressType EmailAddress
if($? -eq $true)
{
Write-Host $element.UserPrincipalName \&quot;:\&quot; \&quot;Activé sur pool 01\&quot;
$UsersPool1++
$CsUsersCount++
$TotalLyUsers++
}

}
}
}


$CsUsers = Get-CsUser -OU \&quot;OU=Utilisateurs,OU=$OU,OU=Directions,DC=efrei,DC=net\&quot;
$users = Get-CsADUser -OU \&quot;OU=Utilisateurs,OU=$OU,OU=Directions,DC=efrei,DC=net\&quot;


#Vérification de l'activation des comptes utilisateurs
foreach ($line in $CsUsers)
{
$object=New-Object –TypeName PSObject
$object | Add-Member –MemberType NoteProperty –Name FirstName –Value $line.FirstName
$object | Add-Member –MemberType NoteProperty –Name LastName –Value $line.LastName
$object | Add-Member –MemberType NoteProperty –Name UserPrincipalName –Value $line.UserPrincipalName
$object | Add-Member –MemberType NoteProperty –Name Enabled –Value $line.Enabled
$object | Add-Member –MemberType NoteProperty –Name RegistrarPool –Value $line.RegistrarPool
$resultatTrue+=$object
}

foreach ($line in $users)
{
if ($line.enabled -ne $true)
{
$object=New-Object –TypeName PSObject
$object | Add-Member –MemberType NoteProperty –Name FirstName –Value $line.FirstName
$object | Add-Member –MemberType NoteProperty –Name LastName –Value $line.LastName
$object | Add-Member –MemberType NoteProperty –Name UserPrincipalName –Value $line.UserPrincipalName
$object | Add-Member –MemberType NoteProperty –Name Enabled –Value $line.Enabled
$object | Add-Member –MemberType NoteProperty –Name RegistrarPool –Value $line.RegistrarPool
$resultatNULLorFALSE+=$object
}
}


Write-Host -f Magenta \&quot; Il ya actuellement $UsersPool1 utilisateurs sur le pool01 \&quot;
Write-Host -f Cyan \&quot; Il ya actuellement $UsersPool2 utilisateurs sur le pool02 \&quot;
Write-Host -f Yellow \&quot; Nombre d'utilisateurs de l'OU ayant Lync : $CsUsersCount sur $userscount\&quot;
Write-Host -f Green \&quot; Au total Lync est activée pour $TotalLyUsers utilisateurs \&quot;


$resultatTrue | Export-Csv -Path c:\Users\Log_LY13_ActivationUsers_EquiPool_INPUT-CSV_$((Get-Date).ToString('yyyyMMdd-HHmmss')).csv -Delimiter \&quot;;\&quot;
$resultatNULLorFALSE | Export-Csv -Path c:\Users\Log_LY13_ActivationUsers_EquiPool_INPUT-CSV_$((Get-Date).ToString('yyyyMMdd-HHmmss')).csv -Append -Delimiter \&quot;;\&quot;


}


Add-Type –AssemblyName System.Windows.Forms
$Form1 = New-Object System.Windows.Forms.Form
$Form1.ClientSize = New-Object System.Drawing.Size(407, 390)
$form1.text = \&quot;Activation d'utilisateurs Lync\&quot;
$form1.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen

#Texte indiquant l'action à effectuer
$label1 = New-Object System.Windows.Forms.Label
$label1.text = \&quot;Quel organisation souhaitez-vous choisir ?\&quot;
$label1.Location = new-object System.Drawing.Point(100,75)
$label1.Size = new-object System.Drawing.Size(300,50)
$label1.set_ForeColor(\&quot;Blue\&quot;«»)
$label1.Font= \&quot;Verdana\&quot;


#Liste déroulante \&quot;OU\&quot;
$comboBox1 = New-Object System.Windows.Forms.ComboBox
$comboBox1.Location = New-Object System.Drawing.Point(25, 135)
$comboBox1.Size = New-Object System.Drawing.Size(350, 310)
$comboBox1.DropDownStyle = [System.Windows.Forms.ComboBoxStyle] :: DropDownList
$comboBox1.Font= \&quot;Arial\&quot;

Get-ADOrganizationalUnit -Filter 'Name -like \&quot;*\&quot;' -SearchBase \&quot;OU=Directions,DC=efrei,DC=net\&quot; -SearchScope OneLevel -Server \&quot;efrei.net\&quot; `
| Where-Object{$_.name -notmatch \&quot;desactives\&quot; -and $_.name -notmatch \&quot;_\&quot;}| select name | Sort-Object name | ForEach-Object {$comboBox1.Items.add($_.Name)}


if ($comboBox1.Items.Count -gt 0)
{
$comboBox1.SelectedIndex -eq $null
}



$boutton_valider = new-object System.Windows.Forms.Button
$boutton_valider.Text = 'Valider'
$boutton_valider.Location = new-object System.Drawing.Size(25,215)
$boutton_valider.size = new-object System.Drawing.Size(94,24)
$boutton_valider.add_Click(
{


#Fenêtre Pop-up confirmant ou annulant le choix d'une OU
$a = new-object -comobject wscript.shell
$intAnswer = $a.popup(\&quot;Êtes-vous sûr de votre choix?\&quot;,0,\&quot;Confirm choice\&quot;,4)

If ($intAnswer -eq 6 -and $comboBox1.SelectedItem -ne $null)
{
$OU = $comboBox1.get_SelectedItem()

$label2.text = \&quot;`n`nVous avez sélectionné la \&quot; + $OU + \&quot;`n`nAttendre la fin pour quitter\&quot;

LY13_ActivationUsers


[void] [System.Reflection.Assembly]::LoadWithPartialName(\&quot;System.Windows.Forms\&quot;«»)
#
# Label3
#
$label3 = new-object System.Windows.Forms.Label
$label3.Location = new-object System.Drawing.Point(70, 70)
$label3.Size = new-object System.Drawing.Size(139,13)
$label3.Text = 'Activation en cours.... '
$label3.Font= \&quot;Verdana\&quot;
#
# boutton OK
#
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(100,180)
$OKButton.Size = New-Object System.Drawing.Size(50,20)
$OKButton.Text = \&quot;OK\&quot;
$OKButton.enabled = $false
$OKButton.Add_Click(
{
$label2.Text = \&quot;Le processus s'est déroulé avec succès `n`nVous pouvez à présent quitter \&quot;
$Form2.Close()
}
)
#
# Form2
#
$Form2 = new-object System.Windows.Forms.form
$Form2.ClientSize = new-object System.Drawing.Size(254, 200)
$Form2.Text = \&quot;Progression de l'activation\&quot;
$form2.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen


$Form2.Controls.Add($label3)
$Form2.Controls.Add($OKButton)


if ($dureeFunction -ge $y)
{
$label3.Text = \&quot;Activation terminée 'nCliquez sur OK pour fermer\&quot;
$OKButton.enabled = $true
$OKButton.refresh()
}

$Form2.activate()
[void]$Form2.ShowDialog()



}

elseif ($intAnswer -eq 6 -and $comboBox1.SelectedItem -eq $null)
{
$label2.text = \&quot;Aucune organisation n'a été renseignée\&quot;
}

else
{
{$a.popup.close()}
$label2.text = \&quot;Veuillez spécifier votre choix ou quitter\&quot;
}


}
)



$boutton_quitter = New-Object System.Windows.Forms.Button
$boutton_quitter.Text = 'Quitter'
$boutton_quitter.Location = New-Object System.Drawing.Point(285, 215)
$boutton_quitter.Size = New-Object System.Drawing.Size(94, 24)
$boutton_quitter.Add_Click({$Form1.close()})



#Texte bas de page décrivant l'action choisie
$label2 = New-Object System.Windows.Forms.Label
$label2.Location = new-object System.Drawing.Size(100,290)
$label2.size = new-object System.Drawing.Size(300,75)
$label2.set_ForeColor(\&quot;Blue\&quot;«»)
$label2.Font= \&quot;Verdana\&quot;



$form1.Controls.Add($label1)
$Form1.Controls.Add($comboBox1)
$Form1.Controls.Add($boutton_valider)
$Form1.Controls.Add($boutton_quitter)
$form1.Controls.Add($label2)

$Form1.activate()
[void]$Form1.showdialog()
[/code:1]

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

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