Question
Problème Powershell windows.form
- reise62
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 3 mois 4 semaines - il y a 3 mois 3 semaines #33215
par reise62
Problème Powershell windows.form a été créé par reise62
Salut à tous.
J'ai un script powershell qui s'exécutait correctement (interface graphique, barre de progression, création des dossiers, etc...) quand je cliquais sur le bouton.
Suite à un besoin, je souhaite que le script s'éxécute automatiquement dès qu'il est appelé par le script précédent.
Je vois bien sur les actions sont bien réalisées mais rien ne s'affiche.
Je ne vois vraiment pas d'où peut venir le problème.
Merci pour l'aide
J'ai un script powershell qui s'exécutait correctement (interface graphique, barre de progression, création des dossiers, etc...) quand je cliquais sur le bouton.
Suite à un besoin, je souhaite que le script s'éxécute automatiquement dès qu'il est appelé par le script précédent.
Je vois bien sur les actions sont bien réalisées mais rien ne s'affiche.
Je ne vois vraiment pas d'où peut venir le problème.
Merci pour l'aide

# Charger le module Windows Forms
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# Définir les variables
$Dir00 = "C:\IT-TOOLS\Start\Common"
$Dir05 = "C:\IT-TOOLS\Start\Sources"
$Dir06 = "C:\TempIT"
$Version = "v2.0.0"
# Créer une nouvelle fenêtre
$Form = New-Object System.Windows.Forms.Form
$Form.Text = "IT-Tools© - $Version"
$Form.Size = New-Object System.Drawing.Size(517, 130)
$Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedSingle
$Form.StartPosition = "CenterScreen"
$Form.MaximizeBox = $false
$Form.MinimizeBox = $false
# Créer un groupe de boutons pour Folder
$PreconfigGroupBox = New-Object System.Windows.Forms.GroupBox
$PreconfigGroupBox.Location = New-Object System.Drawing.Point(6, 5)
$PreconfigGroupBox.Size = New-Object System.Drawing.Size(490, 50)
$PreconfigGroupBox.Text = "Préconfiguration"
$Form.Controls.Add($PreconfigGroupBox)
# Création d'une barre de progression
$progressBar = New-Object System.Windows.Forms.ProgressBar
$progressBar.Location = New-Object System.Drawing.Point(6, 17)
$progressBar.Size = New-Object System.Drawing.Size(480, 25)
$progressBar.Style = [System.Windows.Forms.ProgressBarStyle]::Continuous
$PreconfigGroupBox.Controls.Add($ProgressBar)
# Définition de la fonction Create-Folder
function Create-Folder {
# Mettre à jour le texte de l'étiquette C:\TempIT
$PreconfigGroupBox.Text = "Création du dossier C:\TempIT en cours..."
$progressBar.Value = 0
New-Item -Path "C:\TempIT" -ItemType Directory | Out-Null
Start-Sleep -Seconds 1
# Mettre à jour le texte de l'étiquette C:\TempIT\BIN
$PreconfigGroupBox.Text = "Création du dossier C:\TempIT\BIN en cours..."
$progressBar.Value = 25
New-Item -Path "C:\TempIT\BIN" -ItemType Directory | Out-Null
Start-Sleep -Seconds 1
# Mettre à jour le texte de l'étiquette StartLayout.xml
$PreconfigGroupBox.Text = "Copie du fichier StartLayout.xml en cours..."
$progressBar.Value = 50
Copy-Item -Path "$Dir05\StartLayout.xml" -Destination "C:\TempIT\BIN"
Start-Sleep -Seconds 1
# Mettre à jour le texte de l'étiquette syspin.exe
$PreconfigGroupBox.Text = "Copie du fichier syspin.exe en cours..."
$progressBar.Value = 65
Copy-Item -Path "$Dir05\syspin.exe" -Destination "C:\TempIT\BIN"
Start-Sleep -Seconds 1
# Mettre à jour le texte de l'étiquette W11Dark.jpg
$PreconfigGroupBox.Text = "Copie du fichier W11Dark.jpg en cours..."
$progressBar.Value = 85
Copy-Item -Path "$Dir05\W11Dark.jpg" -Destination "C:\users\$env:username\Pictures"
Start-Sleep -Seconds 1
# Mettre à jour le texte de l'étiquette Ico
$PreconfigGroupBox.Text = "Copie du dossier Ico en cours..."
$progressBar.Value = 100
Copy-Item -Path "$Dir05\Ico" -Destination "$Dir06" -Recurse
Start-Sleep -Seconds 1
# Fermer la fenêtre
$Form.Close()
# Libérer les ressources de la fenêtre
$Form.Dispose()
# Appel script suivant
powershell -WindowStyle Hidden -file "$Dir00\02_Winget.ps1"
}
# Appel de la fonction
Create-Folder
# Affichage de la fenêtre
$Form.ShowDialog()
Dernière édition: il y a 3 mois 3 semaines par Laurent Dardenne. Raison: Balise code
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 3 mois 3 semaines #33224
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Problème Powershell windows.form
Salut,
>>je souhaite que le script s'exécute automatiquement dès qu'il est appelé par le script précédent.
Quel est le code d'appel du script appelant ? comment s'exécute-t-il ?
>>je souhaite que le script s'exécute automatiquement dès qu'il est appelé par le script précédent.
Quel est le code d'appel du script appelant ? comment s'exécute-t-il ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- reise62
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 3 mois 3 semaines #33225
par reise62
Réponse de reise62 sur le sujet Problème Powershell windows.form
Bonjour Laurent,
Voici le script appelant :
[powershell]# Charger le module Windows Forms
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# Définir les variables
$Dir00 = "C:\IT-TOOLS\Start\Common"
$Version = "v2.0.0"
# Créer une nouvelle fenêtre
$Form = New-Object System.Windows.Forms.Form
$Form.Text = "IT-Tools© - $Version"
$Form.Size = New-Object System.Drawing.Size(517, 195)
$Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedSingle
$Form.StartPosition = "CenterScreen"
$Form.MaximizeBox = $false
$Form.MinimizeBox = $false
# Créer un groupe de boutons pour Disclaimer
$DisclaimerGroupBox = New-Object System.Windows.Forms.GroupBox
$DisclaimerGroupBox.Location = New-Object System.Drawing.Point(6, 3)
$DisclaimerGroupBox.Size = New-Object System.Drawing.Size(490, 150)
$DisclaimerGroupBox.Text = "IT-Tools / Disclaimer"
$Form.Controls.Add($DisclaimerGroupBox)
# Ajouter une zone de texte fixe avec ascenseur
$TextBox1 = New-Object System.Windows.Forms.TextBox
$TextBox1.Location = New-Object System.Drawing.Point(6, 20)
$TextBox1.Size = New-Object System.Drawing.Size(480, 90)
$TextBox1.Multiline = $true
$TextBox1.ScrollBars = "Vertical"
$TextBox1.ReadOnly = $true
$TextBox1.TextAlign = "Center"
$TextBox1.Font = New-Object System.Drawing.Font("Calibri", 10, [System.Drawing.FontStyle]::Bold)
$TextBox1.Text = "DISCLAIMER
TEXTE du Disclaimer"
$DisclaimerGroupBox.Controls.Add($TextBox1)
# Ajouter un bouton pour accepter le disclaimer
$AcceptButton = New-Object System.Windows.Forms.Button
$AcceptButton.BackColor = [System.Drawing.Color]::FromArgb(64, 64, 64)
$AcceptButton.ForeColor = [System.Drawing.Color]::FromArgb(240, 240, 240)
$AcceptButton.Location = New-Object System.Drawing.Point(6, 120)
$AcceptButton.Size = New-Object System.Drawing.Size(230, 25)
$AcceptButton.Text = "Accepter le disclaimer"
$AcceptButton.Font = New-Object System.Drawing.Font("Calibri",11,[System.Drawing.FontStyle]::Bold)
$AcceptButton.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
# Définition de la couleur de fond d'origine du bouton
$AcceptButton.Tag = $AcceptButton.BackColor
# Définition de l'événement MouseEnter (souris passe dessus)
$AcceptButton.Add_MouseEnter({
$AcceptButton.BackColor = "Green" # Changer la couleur
})
# Définition de l'événement MouseLeave (souris quitte)
$AcceptButton.Add_MouseLeave({
$AcceptButton.BackColor = $AcceptButton.Tag # Revenir à la couleur de fond d'origine
})
# Fonction du bouton
$AcceptButton.Add_Click({
$Form.Hide()
powershell -file "$Dir00\01_Folder.ps1"
$Form.Dispose()
})
$DisclaimerGroupBox.Controls.Add($AcceptButton)
# Ajouter un bouton pour refuser le disclaimer
$RefuseButton = New-Object System.Windows.Forms.Button
$RefuseButton.BackColor = [System.Drawing.Color]::FromArgb(64, 64, 64)
$RefuseButton.ForeColor = [System.Drawing.Color]::FromArgb(240, 240, 240)
$RefuseButton.Location = New-Object System.Drawing.Point(250, 121)
$RefuseButton.Size = New-Object System.Drawing.Size(230, 23)
$RefuseButton.Text = "Refuser le disclaimer"
$RefuseButton.Font = New-Object System.Drawing.Font("Calibri",11,[System.Drawing.FontStyle]::Bold)
$RefuseButton.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
# Définition de la couleur de fond d'origine du bouton
$RefuseButton.Tag = $RefuseButton.BackColor
# Définition de l'événement MouseEnter (souris passe dessus)
$RefuseButton.Add_MouseEnter({
$RefuseButton.BackColor = "Brown" # Changer la couleur
})
# Définition de l'événement MouseLeave (souris quitte)
$RefuseButton.Add_MouseLeave({
$RefuseButton.BackColor = $RefuseButton.Tag # Revenir à la couleur de fond d'origine
})
# Fonction du bouton
$RefuseButton.Add_Click({
$TextBox1.Text = "Vous avez refusé le disclaimer."
Start-Sleep -Seconds 3
$Form.Close()
})
# Ajout du bouton au groupe de contrôles
$DisclaimerGroupBox.Controls.Add($RefuseButton)
# Afficher la fenêtre
$Form.ShowDialog()
[/powershell]
Merci pour ton aide
Voici le script appelant :
[powershell]# Charger le module Windows Forms
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# Définir les variables
$Dir00 = "C:\IT-TOOLS\Start\Common"
$Version = "v2.0.0"
# Créer une nouvelle fenêtre
$Form = New-Object System.Windows.Forms.Form
$Form.Text = "IT-Tools© - $Version"
$Form.Size = New-Object System.Drawing.Size(517, 195)
$Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedSingle
$Form.StartPosition = "CenterScreen"
$Form.MaximizeBox = $false
$Form.MinimizeBox = $false
# Créer un groupe de boutons pour Disclaimer
$DisclaimerGroupBox = New-Object System.Windows.Forms.GroupBox
$DisclaimerGroupBox.Location = New-Object System.Drawing.Point(6, 3)
$DisclaimerGroupBox.Size = New-Object System.Drawing.Size(490, 150)
$DisclaimerGroupBox.Text = "IT-Tools / Disclaimer"
$Form.Controls.Add($DisclaimerGroupBox)
# Ajouter une zone de texte fixe avec ascenseur
$TextBox1 = New-Object System.Windows.Forms.TextBox
$TextBox1.Location = New-Object System.Drawing.Point(6, 20)
$TextBox1.Size = New-Object System.Drawing.Size(480, 90)
$TextBox1.Multiline = $true
$TextBox1.ScrollBars = "Vertical"
$TextBox1.ReadOnly = $true
$TextBox1.TextAlign = "Center"
$TextBox1.Font = New-Object System.Drawing.Font("Calibri", 10, [System.Drawing.FontStyle]::Bold)
$TextBox1.Text = "DISCLAIMER
TEXTE du Disclaimer"
$DisclaimerGroupBox.Controls.Add($TextBox1)
# Ajouter un bouton pour accepter le disclaimer
$AcceptButton = New-Object System.Windows.Forms.Button
$AcceptButton.BackColor = [System.Drawing.Color]::FromArgb(64, 64, 64)
$AcceptButton.ForeColor = [System.Drawing.Color]::FromArgb(240, 240, 240)
$AcceptButton.Location = New-Object System.Drawing.Point(6, 120)
$AcceptButton.Size = New-Object System.Drawing.Size(230, 25)
$AcceptButton.Text = "Accepter le disclaimer"
$AcceptButton.Font = New-Object System.Drawing.Font("Calibri",11,[System.Drawing.FontStyle]::Bold)
$AcceptButton.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
# Définition de la couleur de fond d'origine du bouton
$AcceptButton.Tag = $AcceptButton.BackColor
# Définition de l'événement MouseEnter (souris passe dessus)
$AcceptButton.Add_MouseEnter({
$AcceptButton.BackColor = "Green" # Changer la couleur
})
# Définition de l'événement MouseLeave (souris quitte)
$AcceptButton.Add_MouseLeave({
$AcceptButton.BackColor = $AcceptButton.Tag # Revenir à la couleur de fond d'origine
})
# Fonction du bouton
$AcceptButton.Add_Click({
$Form.Hide()
powershell -file "$Dir00\01_Folder.ps1"
$Form.Dispose()
})
$DisclaimerGroupBox.Controls.Add($AcceptButton)
# Ajouter un bouton pour refuser le disclaimer
$RefuseButton = New-Object System.Windows.Forms.Button
$RefuseButton.BackColor = [System.Drawing.Color]::FromArgb(64, 64, 64)
$RefuseButton.ForeColor = [System.Drawing.Color]::FromArgb(240, 240, 240)
$RefuseButton.Location = New-Object System.Drawing.Point(250, 121)
$RefuseButton.Size = New-Object System.Drawing.Size(230, 23)
$RefuseButton.Text = "Refuser le disclaimer"
$RefuseButton.Font = New-Object System.Drawing.Font("Calibri",11,[System.Drawing.FontStyle]::Bold)
$RefuseButton.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
# Définition de la couleur de fond d'origine du bouton
$RefuseButton.Tag = $RefuseButton.BackColor
# Définition de l'événement MouseEnter (souris passe dessus)
$RefuseButton.Add_MouseEnter({
$RefuseButton.BackColor = "Brown" # Changer la couleur
})
# Définition de l'événement MouseLeave (souris quitte)
$RefuseButton.Add_MouseLeave({
$RefuseButton.BackColor = $RefuseButton.Tag # Revenir à la couleur de fond d'origine
})
# Fonction du bouton
$RefuseButton.Add_Click({
$TextBox1.Text = "Vous avez refusé le disclaimer."
Start-Sleep -Seconds 3
$Form.Close()
})
# Ajout du bouton au groupe de contrôles
$DisclaimerGroupBox.Controls.Add($RefuseButton)
# Afficher la fenêtre
$Form.ShowDialog()
[/powershell]
Merci pour ton aide

Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 3 mois 3 semaines #33228
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Problème Powershell windows.form
Pour ceci :Quel est l'intérêt de créer un autre process ? pourquoi ne pas utiliser le source :
. "$Dir00\01_Folder.ps1"
As-tu vérifier si la fenêtre du second process n'est pas masquée ?
Je n'ai pas testé ton code, mais je ne suis pas certain que la libération d'une WinForm ( $Form.Dispose() ) au sein d'un de ses eventhandler soit correcte ...
$Form.Hide()
powershell -file "$Dir00\01_Folder.ps1"
$Form.Dispose()
. "$Dir00\01_Folder.ps1"
As-tu vérifier si la fenêtre du second process n'est pas masquée ?
Je n'ai pas testé ton code, mais je ne suis pas certain que la libération d'une WinForm ( $Form.Dispose() ) au sein d'un de ses eventhandler soit correcte ...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- reise62
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 3 mois 3 semaines #33229
par reise62
Réponse de reise62 sur le sujet Problème Powershell windows.form
Effectivement, je vais tester en incluant le code du script dans celui là.
Je reviendrai ici pour te tenir informé.
Merci pour la suggestion
Je reviendrai ici pour te tenir informé.
Merci pour la suggestion

Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6294
- Remerciements reçus 67
il y a 3 mois 3 semaines #33230
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Problème Powershell windows.form
>> je vais tester en incluant le code du script dans celui là
Si les deux scripts doivent rester autonome attention s'ils utilisent la même portée, car tu risques d'écraser des variables de même nom.
Il faut aussi savoir si le comportement global de ton traitement doit être synchrone ou pas. L'usage d'un second process est similaire à de l'asynchrone.
Si les deux scripts doivent rester autonome attention s'ils utilisent la même portée, car tu risques d'écraser des variables de même nom.
Il faut aussi savoir si le comportement global de ton traitement doit être synchrone ou pas. L'usage d'un second process est similaire à de l'asynchrone.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.055 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Problème Powershell windows.form