Natürlich ist es auch in PowerShell möglich eine Messagebox aufzurufen. Wie gewohnt können Titel, Inhalt, Buttons sowie Messageboxicons ausgewählt und angezeigt werden. Messageboxen eigenen sich zu einem um in einem Script Eingaben eines Benutzer zu realisieren oder auch als praktische Information, dass ein Script durchgelaufen ist. Der Aufruf der Messagebox erfolgt mittels [System.Windows.Forms.MessageBox]::Show(„Nachricht“,“Titel“,0). Der erste String Enthält die Nachricht, der zweite Enthält den Titel der Messagebox. Der Integer gibt an, welche Buttons dargestellt werden sollen. Optional kann das Icon mittels [System.Windows.Forms.MessageBoxIcon]:: angegeben werden. Erst eine Liste aller Buttons, dann folgt eine Übersicht über alle Icons.
Integer | Angezeigte Buttons |
Name im Englischem |
0 | OK | OK |
1 | OK, Abbrechen | OK, Cancel |
2 | Abbrechen, Wiederholen, Ignorieren | Abort, Retry, Ignore |
3 | Ja, Nein, Abbrechen | Yes, No, Cancel |
4 | Ja, Nein | Yes, No |
5 | Wiederholen, Abbrechen | Retry, Cancel |
Messagebox Icons
Symbol | deutsche Bezeichnung | englische Bezeichnung |
Sternchen | Asterisk | |
Fehler | Error | |
Ausruf, Aufschrei | Exclamation | |
Hand | Hand | |
Information | Information | |
kein Symbol | None | |
Frage | Question | |
Stopp | Stop | |
Warnung | Warning |
Um bestimmten Code nach einem Buttonklick beispielswiese auf ja, nein oder einen anderen Button auszuführen, muss das Ergebnis des Buttonklicks abgefangen werden. Dies kann mit einer beliebigen Variable wie folgt geschehen $Result = [System.Windows.Forms.MessageBox]::Show(„Nachricht“,“Titel“,0). Die Variable $Result nimmt dann den Namen des geklickten Buttons. In diesem Beispiel also „OK“. Der Wert ist immer im englischem Wort. Nun folgen einige Codebeispiele zur Verdeutlichung.
Codebeispiele
1 2 3 4 5 6 7 8 9 |
#Variante 1 [System.Windows.Forms.MessageBox]::Show("Nachricht","Titel",0) #Variante 2 $msg = "Auch mit Variablen geht es" [System.Windows.Forms.MessageBox]::Show($msg,"Titel",0) #Variante 3 [System.Windows.Forms.MessageBox]::Show("Nachricht","Titel",[System.Windows.Forms.MessageBoxButtons]::OK) |
Ausgabe Variante 1. Variante 3 gibt die Selbe Messagebox wie Variante 1 aus. |
Ausgabe Variante 2 |
Messageboxen mit Eingabeaufforderung und Icons.
Codebeispiele
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 |
#Variante 1 $Result = [System.Windows.Forms.MessageBox]::Show("Möchten Sie das Script fortführen?","Frage an den Benutzer",1) If ($Result -eq "Yes") { # Script läuft weiter. } else { # keine Aktion ausführen } #Variante 2 $Result = [System.Windows.Forms.MessageBox]::Show("Möchten Sie den Bildschirm sperren?","Frage an den Benutzer",4,[System.Windows.Forms.MessageBoxIcon]::Exclamation) If ($Result -eq "Yes") { rundll32.exe user32.dll,LockWorkStation } else { # keine Aktion ausführen } #Ausgabe #Bei 'JA' wird der Computer gesperrt. Alternative Tastenkombination #ist [Win] + L #Variante 3 $Result = [System.Windows.Forms.MessageBox]::Show("Möchten Sie die Datei überschreiben?","Frage an den Benutzer",3,[System.Windows.Forms.MessageBoxIcon]::Exclamation) If ($Result -eq "Yes") { $a = "Schreibvorgang wurde fortgesetzt" $a } elseif ($Result -eq "No") { $a = "Schreibvorgang wurde abgebrochen. Antwort Nein." $a } else { $a = "Schreibvorgang wurde abgebrochen" $a } #Ausgabe #Ja = "Schreibvorgang wurde fortgesetzt" #Nein = "Schreibvorgang wurde abgebrochen. Antwort Nein." #Abbrechen = "Schreibvorgang wurde abgebrochen" |
Es können auch während des Scriptes Aufrufe von Messageboxen generiert werden. In einer For Schleife wird ein bestimmter Wert hochgezählt, kommt dieser in einen kritischen Bereich (90), soll der Benutzer gefragt werden wie fortzufahren ist.
Codebeispiele
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 |
for( $i = 0; $i -le 100; $i++) { If ($i -gt 89 -and $i -le 90 ) { $Result = [System.Windows.Forms.MessageBox]::Show("Achtung $([System.Environment]::NewLine)Der Kontrollwert liegt bei ($i).$([System.Environment]::NewLine)" + "Möchten Sie ihn zurücksetzten?","Frage an den Benutzer",3,[System.Windows.Forms.MessageBoxIcon]::Exclamation) If($Result -eq "Yes") { $i = $null } elseif ( $Result -eq "No") { # Wert bleibt } else #bei Abbrechen { break } } else { "#Kontrollwert liegt bei $($i)" } #Kontrollwert liegt bei 0 #Kontrollwert liegt bei 1 #Kontrollwert liegt bei 2 #Kontrollwert liegt bei 3 #Kontrollwert liegt bei 4 #Kontrollwert liegt bei 5 #Kontrollwert liegt bei 6 #Kontrollwert liegt bei 7 # ... ... ... ... #Kontrollwert liegt bei 84 #Kontrollwert liegt bei 85 #Kontrollwert liegt bei 86 #Kontrollwert liegt bei 87 #Kontrollwert liegt bei 88 #Kontrollwert liegt bei 89 # Hier erscheint die Messagebox wie vorgegangen werden soll. # Ja - $i wird auf 0 gesetzt # Nein - $bleibt, das Script läuft bis $i = 100 # Abbrechen - bricht das Script ab |
Die aufpoppende Messagebox.
rewe
Kann bitte ein Beispiel gebracht werden, wenn man eine Scrollbar / Messagebox (PowerShell) verwenden möchte?. Danke.
Unterumständen muss man vorher noch: Add-Type -AssemblyName System.Windows.Forms aufrufen.
Sehr gut! Danke vielmals für die Anleitung und die super Arbeit!
sehr geil. danke