PowerShell GUI Erstellung

PowerShell GUI Erstellung

Um einem Skript in PowerShell einen hübschen Anstrich zu verpassen ist meist eine GUI unabdinglich. Mit wenigen Schritten kann diese einfach erstellt werden.

PowerShell GUI Erstellung

Um einem Skript in PowerShell einen hübschen Anstrich zu verpassen ist meist eine GUI unabdinglich. Mit wenigen Schritten kann diese einfach erstellt werden. Es empfiehlt sich, das Windows PowerShell ISE oder einen vergleichbaren Editor zu nutzen. Beachte bitte, dass du vorher die Ausführung von PowerShell Skripten auf deinem Computer freigeben musst. Den passenden Artikel findest du ->hier<-. 

Sofern du das Windows PowerShell ISE nutzt, erstelle nach dem öffnen ein neuen Skript durch Betätigen des Buttons "Neues Skript" oder "Neu". 

Systemresourcen

Beginnen wir mit dem laden der benötigten Klassen. Diese werden mit folgenden Befehlen geladen:

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

Fenster

Jetzt kann mit dem Aufbau des Fensters begonnen werden. Folgend ist ein beispielhafter Aufbau des Blocks zu sehen, welcher ein leeres Fenster darstellt.

#Hauptfenster
$Fenster= New-Object System.Windows.Forms.Form           #macht $Fenster zu einem Fenster
$Fenster.Size = New-Object System.Drawing.Size(300,200)     #Die Größe des Fensters beträgt 300x200 Pixel
$Fenster.Backcolor="white"  #Hintergrundfarbe ist weiß
$Fenster.ForeColor="black"    #Schriftfarbe im gesamten Fenster außer Fensterzeile oben ist schwarz
$Fenster.StartPosition ="CenterScreen" #Wird auf dem Hauptbildschirm zentriert angezeigt
$Fenster.Text = "Technik-Kiste.de"  #Text in der Fensterzeile oben

[void] $Fenster.ShowDialog()   #ruft ein Objekt wie oben definiert auf

Führen wir das Skript nun aus, erhalten wir ein kleines Fenster mit weißem Hintergrund. Es besitzt eine Größe von 300 x 200 Pixel und einen weißen Hintergrund. Schrift wird später in Schwarz dargestellt.

1

Text im Fenster

Um einen Text darzustellen machen wir uns dasselbe Prinzip zunutze. Nur das ein Label statt ein Fenster erzeugt wird. So ergibt sich folgender Block, welcher zwischen dem Hauptfenster und dem Aufruf platziert wird:

#Copyright
$Copyright = New-Object System.Windows.Forms.Label     #Definiert $Copyright als Label
$Copyright.Location = New-Object System.Drawing.Size(1,140)    #Gibt den Standort des Labels im Fenster an
$Copyright.Size = New-Object System.Drawing.Size(200,20)    #Die Größe des Labels
$Copyright.Text = "(c) 2020 Hans Wurst | Test Skript"    #Der Text des Labels
$Fenster.Controls.Add($Copyright)  #Hinzufügen des Labels zum Fenster

Führen wir das Skript nun aus, sehen wir ein Fenster mit unserem Copyright:

2

Buttons

Doch wem nützt ein Fenster ohne Buttons? Deshalb fügen wir nun Buttons mit Funktionen hinzu:

#Buttons

#Beenden Button $Bending
$ending = New-Object System.Windows.Forms.Button        #Definiert einen Button auf $ending
$ending.Location = New-Object System.Drawing.Size(90,120)   #Gibt den Standort im Fenster an
$ending.Size = New-Object System.Drawing.Size(100,20)    #Gibt die Größe des Buttons an
$ending.Text = "Beenden"    #Gibt den Text des Buttons an
$ending.Name = "Beenden"    #Gibt den Namen des Buttons an
$ending.DialogResult = "Cancel"   #Definition des Ergebnisses
$ending.Add_Click({$Fenster.Close()})   #Beim darauf klicken soll die Methode Close ausgeführt werden um das Fenster zu schließen
$Fenster.Controls.Add($ending)   #Fügt den Button zum Fenster hinzu

#Systemsteuerung Button $B_systemctl
$systemctl = New-Object System.Windows.Forms.Button  #Definiert einen Button auf $systemctl
$systemctl.Location = New-Object System.Drawing.Size(90,25) #Gibt den Standort im Fenster an
$systemctl.Size = New-Object System.Drawing.Size(100,20) #Gibt die Größe des Buttons an
$systemctl.Text = "Systemsteuerung" #Gibt den Text des Buttons an
$systemctl.Name = "Systemsteuerung"  #Gibt den Namen des Buttons an
$systemctl.DialogResult = "None"  #Definition des Ergebnisses somit bleibt bei None das Fenster so lange offen bis es durch den Beenden Button geschlossen wird
$systemctl.Add_Click({start-process control})  #Startet den Prozess Systemsteuerung
$Fenster.Controls.Add($systemctl) #Fügt den Button zum Fenster hinzu

#Gateway Button $gateway
$gateway = New-Object System.Windows.Forms.Button       #Definiert einen Button auf $gateway
$gateway.Location = New-Object System.Drawing.Size(90,50)     #Gibt den Standort im Fenster an
$gateway.Size = New-Object System.Drawing.Size(100,20)     #Gibt die Größe des Buttons an
$gateway.Text = "Gateway"      #Gibt den Text des Buttons an
$gateway.Name = "Gateway"      #Gibt den Namen des Buttons an
$gateway.DialogResult = "None"    #Definition des Ergebnisses somit bleibt bei None das Fenster so lange offen bis es durch den Beenden Button geschlossen wird
$gateway.Add_Click({start-process microsoft-edge:http://192.168.66.1})   #Startet den Prozess Edge-Browser und gibt direkt den Parameter der Webaddresse mit
$Fenster.Controls.Add($gateway)  #Fügt den Button zum Fenster hinzu

Diese öffnen dann z. B. die Systemsteuerung, Website des Gateways/Routers und bieten die Möglichkeiten das Skript und somit das Fenster zu beenden. Aufgrund der Koordinaten erscheint das Fenster mit seinen Buttons so:

3


Artikel wird noch weiter fortgeführt.

Dies könnte dich ebenfalls interessieren:

Anmeldung zum Newsletter:

Zertifizierung

introduction to cybersecurity

Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.