Transformer vos scripts avec Windows Forms ! Avoir un affichage graphique !

Introduction

Voilà un outil ultra basique que j'utilise en permanence : transformer mes scripts pour avoir un affichage graphique un peu plus sympa !

Les 2 exemples sont des extraits de mon script de réplication de labos Hyper-V :


Exemple 1

1) Je veux poser une question simple à l'utilisateur.
2) S'il répond non, le script lui affiche une nouvelle fenêtre et lui propose de remédier à la situation avant de recommencer puis quitte

D'abord, on indique la ligne suivant en haut de chaque script qui contiendra de l'affichage Windows Forms :

Add-Type -AssemblyName System.Windows.Forms

Le code des fenêtres :

# (1) Avez-vous placé les VM non compressées dans C:\LABOVM ?

$response1 = [System.Windows.Forms.MessageBox]::Show('Avez-vous placé les VM non compressées dans C:\LABOVM ?', 'Vérification des pré-requis', [System.Windows.Forms.MessageBoxButtons]::YesNo)

if ($response1 -eq 'No') {

# (4) Veuillez procéder à l'action demandée puis ré-exécuter ce script

[System.Windows.Forms.MessageBox]::Show('Veuillez procéder à l`action demandée puis ré-exécuter ce script')

exit

}

Voici le résultat lors de l'exécution :

Capture d'écran

Et si je clique sur Oui (ou tappe ENTRER) :

Capture d'écran


Exemple 2

1) je veux créer un formulaire qui demande à l'utilisateur d'entrer le nom d'un labo
(là, le code est déjà bien plus dégueulasse...)

Voici le code :

# Veuillez nommer le LABO (exemple : TP06)

$form8 = New-Object System.Windows.Forms.Form

$form8.Text = 'Nom du LABO'

$form8.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen  # Cette ligne centre la fenêtre

$form8.AutoSize = $true

$form8.AutoSizeMode = [System.Windows.Forms.AutoSizeMode]::GrowAndShrink

$textBox8 = New-Object System.Windows.Forms.TextBox

$textBox8.Location = New-Object System.Drawing.Point(10, 10)

$textBox8.Size = New-Object System.Drawing.Size(200, 20)

$form8.Controls.Add($textBox8)

$buttonOk = New-Object System.Windows.Forms.Button

$buttonOk.Text = 'OK'

$buttonOk.Location = New-Object System.Drawing.Point(220, 10)

$buttonOk.Size = New-Object System.Drawing.Size(50, 20)

$buttonOk.DialogResult = [System.Windows.Forms.DialogResult]::OK

$form8.Controls.Add($buttonOk)

$form8.AcceptButton = $buttonOk

$form8.ShowDialog()

$LABNAME = $textBox8.Text

Voici le résultat lors de l'exécution :

Capture d'écran


Pour aller plus loin

Pour aller plus loin, regardez le mini-article pour convertir votre joli script graphique en .exe !


⬆️ Retour en haut de la page