Files
Gl-Komp-IT-Sys/scripts/ad_users_sa_groups_window.ps1

83 lines
3.1 KiB
PowerShell

# Erforderliche Assemblies laden
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# Formular erstellen
$form = New-Object System.Windows.Forms.Form
$form.Text = "Benutzer- und Gruppenerstellung"
$form.Size = New-Object System.Drawing.Size(500, 600)
$form.StartPosition = "CenterScreen"
# Labels und Textboxen erstellen
$labels = @("Type", "Name", "FirstName", "LastName", "SAMAccountName", "UPN", "OU", "DC", "Password", "Group", "GroupOU")
$positions = 20
$textBoxes = @{}
foreach ($label in $labels) {
$labelControl = New-Object System.Windows.Forms.Label
$labelControl.Text = $label
$labelControl.Size = New-Object System.Drawing.Size(120, 20)
$labelControl.Location = New-Object System.Drawing.Point(20, $positions)
$form.Controls.Add($labelControl)
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Size = New-Object System.Drawing.Size(300, 20)
$textBox.Location = New-Object System.Drawing.Point(150, $positions)
$form.Controls.Add($textBox)
$textBoxes[$label] = $textBox
$positions += 30
}
# OK-Button
$okButton = New-Object System.Windows.Forms.Button
$okButton.Text = "OK"
$okButton.Location = New-Object System.Drawing.Point(200, $positions)
$okButton.Add_Click({
$form.Close()
})
$form.Controls.Add($okButton)
# Formular anzeigen
$form.ShowDialog()
# Eingabedaten extrahieren
$data = @{
Type = $textBoxes["Type"].Text
Name = $textBoxes["Name"].Text
FirstName = $textBoxes["FirstName"].Text
LastName = $textBoxes["LastName"].Text
SAMAccountName = $textBoxes["SAMAccountName"].Text
UPN = $textBoxes["UPN"].Text
OU = $textBoxes["OU"].Text
DC = $textBoxes["DC"].Text
Password = $textBoxes["Password"].Text
Group = $textBoxes["Group"].Text
GroupOU = $textBoxes["GroupOU"].Text
}
# Überprüfen, ob die OU und DC Werte haben
if (-not $data.OU) { $data.OU = "DefaultOU" }
if (-not $data.DC) { $data.DC = "DefaultDC" }
# Benutzer oder Gruppe erstellen basierend auf dem Typ
if ($data.Type -eq 'User' -or $data.Type -eq 'SA') {
$name = if ($data.Name) { $data.Name } else { $data.FirstName + " " + $data.LastName }
if (-not (Get-ADUser -Filter "SamAccountName -eq '$($data.SAMAccountName)'")) {
New-ADUser -Name $name -GivenName $data.FirstName -Surname $data.LastName -SamAccountName $data.SAMAccountName -UserPrincipalName $data.UPN -Path "OU=$($data.OU),DC=$($data.DC)" -AccountPassword (ConvertTo-SecureString $data.Password -AsPlainText -Force) -Enabled $true
$groups = $data.Group -split ','
foreach ($group in $groups) {
if (Get-ADGroup -Filter "Name -eq '$group'") {
Add-ADGroupMember -Identity $group -Members $data.SAMAccountName
} else {
New-ADGroup -Name $group -GroupScope Global -Path "OU=$($data.GroupOU),DC=$($data.DC)"
Add-ADGroupMember -Identity $group -Members $data.SAMAccountName
}
}
}
} elseif ($data.Type -eq 'Group') {
if (-not (Get-ADGroup -Filter "Name -eq '$($data.Group)'")) {
New-ADGroup -Name $data.Group -GroupScope Global -Path "OU=$($data.GroupOU),DC=$($data.DC)"
}
}