Benutzerverwaltung per Powershell - mit GUI
In meinem letzten Blogeintrag [1] habe ich erklärt, wie die verschiedenen Befehle aussehen, die eine Benutzerverwaltung im AD und Exchange ermöglichen. Hier zeige ich nun, wie man sich nur mit PowerShell Befehlen eine kleine Oberfläche (GUI) baut, um das Handling weiter zu verbessern.
Die benötigten Module
Um grafische Oberflächen mit der PowerShell zu erzeugen benötigen wir folgende Module:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
System.Windows.Forms ist hier dafür zuständig, dass man überhaupt ein Fenster und grafische Objekte erstellen kann. System.Drawing verwenden wir um die Größe und Position der einzelnen Elemente im Fenster zu bestimmen.
Das Fenster
Das Grundfenster unseres Dialogs erstellen wir wie folgt:
$window = New-Object System.Windows.Forms.Form $window.Text = "New-User" $window.Size = New-Object System.Drawing.Size(300,280) � $window.StartPosition = "CenterScreen"
Nun erzeugen wir uns noch zwei Buttons OK und Cancel:
$OKButton = New-Object System.Windows.Forms.Button � $OKButton.Text = "OK"
$CancelButton = New-Object System.Windows.Forms.Button $CancelButton.Text = "Cancel"
und fügen diese zum Fenster an einer festen Position hinzu:
$OKButton.Location = New-Object System.Drawing.Size(75,200) $OKButton.Size = New-Object System.Drawing.Size(75,23) $window .Controls.Add($OKButton) $CancelButton.Location = New-Object System.Drawing.Size(150,200) $CancelButton.Size = New-Object System.Drawing.Size(75,23) $window .Controls.Add($CancelButton)
Damit beim Klick auf den Button Cancel das Fenster geschlossen wird, fügen wir diese Aktion noch hinzu:
$CancelButton.Add_Click({$objForm.Close()})
Mehrere Funktionen kann man wie folgt zum Button OK hinzufügen:
$OKButton.Add_Click({$objForm.Close(); $success = $TRUE})
Textfelder
Damit man über den Dialog auch Informationen abfragen kann, verwenden wir Textfelder. Diese erzeugt man ähnlich zum Button mit folgendem Befehl:
$FirstnameTB = New-Object System.Windows.Forms.TextBox
Auch diese müssen zum Fenster hinzugefügt werden:
$FirstnameTB.Location = New-Object System.Drawing.Size(90,20) $FirstnameTB.Size = New-Object System.Drawing.Size(120,20) $objForm.Controls.Add($FirstnameTB)
Im weiteren Verlauf des Programms kann man dann über den Befehl FirstnameTB.Text auf den Inhalt zugreifen:
$firstname = $FirstnameTB.Text
Radiobuttons
Um einfache Auswahlen zwischen einer begrenzten Zahl an Möglichkeiten zu realisieren, verwendet man gerne die sogenannten Radiobuttons. Wenn man sie zu einer Gruppe vereint, ist es dem Benutzer immer nur erlaubt eine der Möglichkeiten zu wählen. Hiermit kann man falsche Eingaben leicht verhindern. Man erzeugt einen Radiobutton wie folgt:
$radio1 = New-Object System.Windows.Forms.RadioButton
Mit
$radio1.Text = "Beschriftung"
gibt man dem RadioButton eine Beschriftung.
Um die Auswahl auf ein Element zu beschränken, nimmt man nun seine RadioButtons und setzt sie zu einer Gruppe zusammen:
$RadioGroup = New-Object System.Windows.Forms.GroupBox $RadioGroup.Controls.Add($radio1) $RadioGroup.Controls.Add($radio2)
Um später im Programm zu erfahren, ob ein Button ausgewählt ist, verwendet man $radio1.Checked. Dieser liefert True oder False zurück. Hier ist zu beachten, dass der Vergleich über -eq "True" geschehen muss. Der PowerShell übliche Vergleich -eq $True funktioniert nicht.
- ASP.NET 1
- Active Directory 41
- Administration Tools 1
- Allgemein 60
- Backup 4
- ChatBots 5
- Configuration Manager 3
- DNS 1
- Data Protection Manager 1
- Deployment 24
- Endpoint Protection 1
- Exchange Server 62
- Gruppenrichtlinien 4
- Hyper-V 18
- Intune 1
- Konferenz 1
- Künstliche Intelligenz 7
- Linux 3
- Microsoft Office 11
- Microsoft Teams 1
- Office 365 11
- Office Web App Server 1
- Powershell 21
- Remote Desktop Server 1
- Remote Server 1
- SQL Server 8
- Sharepoint Server 12
- Sicherheit 1
- System Center 10
- Training 1
- Verschlüsselung 2
- Virtual Machine Manager 1
- Visual Studio 1
- WSUS 7
- Windows 10 12
- Windows 8 9
- Windows Azure 4
- Windows Client 1
- Windows Server 24
- Windows Server 2012 7
- Windows Server 2012R2 15
- Windows Server 2016 7
- Windows Server 2019 2
- Windows Server 2022 1
- Zertifikate 4