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.
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:
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:
Artikel wird noch weiter fortgeführt.