83 lines
3.1 KiB
PowerShell
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)"
|
|
}
|
|
}
|