Add_User.ps1

Neu erstellt.
This commit is contained in:
Alin 2025-04-24 07:22:50 +00:00
parent da477dc1f9
commit bd27e39a0d

407
Bestellungen/Add_User.ps1 Normal file
View File

@ -0,0 +1,407 @@
# Alin Sennewald 28.11.2022
# letzte Änderung 25.01.2024
# Script für das erstellen PW,Homelaufwerk,verschieben und Rechte hinzufügen.
Import-Module ActiveDirectory
function creatpw{
param(
[string]$Vorname,
[string]$Nachname,
[string]$user
)
# Umlaute entfernen bzw. ersetzten
$Vorname = $Vorname.Replace('ö','oe').Replace('ä','ae').Replace('ü','ue').Replace('ß','ss').Replace('Ö','Oe').Replace('Ü','Ue').Replace('Ä','Ae')
$Nachname = $Nachname.Replace('ö','oe').Replace('ä','ae').Replace('ü','ue').Replace('ß','ss').Replace('Ö','Oe').Replace('Ü','Ue').Replace('Ä','Ae')
# Alle Buchstaben in groß
$Vorname = $Vorname.ToUpper()
$Nachname = $Nachname.ToUpper()
$VornameK = $Vorname.ToLower()
$NachnameK = $Nachname.ToLower()
# Jeweils 1 Zeichen und letztes Zeichen in Variable
$CodeVorname = $Vorname[0] + $VornameK[-1]
$CodeNachname = $Nachname[0] + $NachnameK[-1]
# Länge Vorname bzw. Nachname
$Vornameanzahl = $Vorname.Length
$Nachnameanzahl = $Nachname.Length
# Wenn länger als 9 Zeichnen, dann abschneinden bzw 9 setzten.
if($Vornameanzahl -ge "9" ) {$Vornameanzahl = "9"}
if($Nachnameanzahl -ge "9" ) {$Nachnameanzahl = "9"}
# Passwort zusammen setzten und Globale Variable erstellen
$Global:Codename = "##*" + $CodeVorname + $CodeNachname + $Vornameanzahl + $Nachnameanzahl + "*##"
Set-ADAccountPassword $user -NewPassword (ConvertTo-SecureString -AsPlainText $Codename -Force) -Reset
# User aktivieren
Enable-ADAccount -Identity $user
Set-ADUser -Identity $user -ChangePasswordAtLogon:$True
Write-Host $user - $Vorname - $Nachname : $Codename "( Kennwort ist im Zwischenspeicher. )"
Write-Host Bei light User Kennwört läuft nie ab + Haken raus nehmen
Set-Clipboard $Codename
}
function homelaufwerk-erstellen{
param(
[string]$BENUTZER
)
$homeunc = "\\n-ad.n-ergie\daten\Homedir"
$DIR = $homeunc + "\" + $BENUTZER.ToUpper()
if (!(Test-Path -Path $DIR))
{
$paramNewItem = @{
Path = $DIR
ItemType = 'Directory'
Force = $true
}
New-Item @paramNewItem
}
$acl = Get-Acl $DIR
$Rights = [System.Security.AccessControl.FileSystemRights] "Modify, Synchronize"
$Access= [System.Security.AccessControl.AccessControlType]::Allow
$Inherit=[System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit
$Prop= [System.Security.AccessControl.PropagationFlags]::InheritOnly
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule ($BENUTZER,$Rights,$Inherit,$Prop,$Access)
$ACL.AddAccessRule($AccessRule)
set-acl -AclObject $ACL -Path $DIR
$Rights = [System.Security.AccessControl.FileSystemRights] "Write, ReadAndExecute, Synchronize"
$Access= [System.Security.AccessControl.AccessControlType]::Allow
$Inherit= [System.Security.AccessControl.InheritanceFlags]::none
$Prop = [System.Security.AccessControl.PropagationFlags]::none
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule ($BENUTZER,$Rights,$Inherit,$Prop,$Access)
$ACL.AddAccessRule($AccessRule)
set-acl -AclObject $ACL -Path $DIR
# Basisordner festlegen in AD
Set-ADUser -Identity $BENUTZER -HomeDirectory $DIR -HomeDrive H;
}
function Show-CustomMenu
{
param (
[string]$menuname = 'AD User erstellen'
)
Clear-Host
Write-Host "================ $menuname ================"
Write-host ""
Write-Host "1: Wähle '1' Passwort erstellen/aktivieren/verschieben."
Write-Host "2: Wähle '2' Homelaufwerk erstellen."
Write-Host "3: Wähle '3' Abteilungslaufwerk und Rechte vergeben."
Write-Host "4: Wähle '4' Rechtegruppen suchen/vergeben."
Write-Host "5: Wähle '5' Abgleich Mail + Benutzername"
Write-Host "Q: Wähle 'Q' Programm beenden."
Write-Host ""
Write-host ""
}
function Menu-anzeigen{
$auswahl = $null
# Menue aufrufen und Titel uebergeben
Show-CustomMenu menuname 'AD User erstellen'
# Eingabe /Auswahl des Benutzers
$auswahl = Read-Host "Bitte die gewünschte Option wählen"
# Optionen wählen
switch ($auswahl){
'1' {
cls
Write-host ""
$UserName = Read-Host "Username eingeben"
$Userdescription = Read-Host "SD Nummer eingeben"
$vorname1 = (get-aduser $UserName -Properties GivenName, Surname).Givenname
$nachname1 = (get-aduser $UserName -Properties GivenName, Surname).Surname
$title = "Passwort setzten"
$question = "Soll das Passwort für den User $UserName - $vorname1 $nachname1 gesetzt werden?"
$choices = '&Ja', '&Nein'
$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 0) {
switch (Read-Host "Bitte (1) für intern, (2) für extern, (3) Wartung / Light "){
1 { $Domainselect = Get-ADForest | ForEach-Object UPNSuffixes | Out-GridView -PassThru -Title "4. Domaine auswählen"
$Vorname1 = $Vorname1.Replace('ö','oe').Replace('ä','ae').Replace('ü','ue').Replace('ß','ss').Replace('Ö','Oe').Replace('Ü','Ue').Replace('Ä','Ae')
$Nachname1 = $Nachname1.Replace('ö','oe').Replace('ä','ae').Replace('ü','ue').Replace('ß','ss').Replace('Ö','Oe').Replace('Ü','Ue').Replace('Ä','Ae')
$varforUserprin = $vorname1.ToLower() + "." + $nachname1.ToLower() + "@" + $Domainselect
Get-aduser $UserName | Set-ADUser -UserPrincipalName $varforUserprin
}
2 { $Domainselect = Get-ADForest | ForEach-Object UPNSuffixes | Out-GridView -PassThru -Title "4. Domaine auswählen"
$Vorname1 = $Vorname1.Replace('ö','oe').Replace('ä','ae').Replace('ü','ue').Replace('ß','ss').Replace('Ö','Oe').Replace('Ü','Ue').Replace('Ä','Ae')
$Nachname1 = $Nachname1.Replace('ö','oe').Replace('ä','ae').Replace('ü','ue').Replace('ß','ss').Replace('Ö','Oe').Replace('Ü','Ue').Replace('Ä','Ae')
$varforUserprin = $vorname1.ToLower() + "." + $nachname1.ToLower() + ".extern" + "@" + $Domainselect
Get-aduser $UserName | Set-ADUser -UserPrincipalName $varforUserprin }
3 { $Domainselect = Get-ADForest | ForEach-Object UPNSuffixes | Out-GridView -PassThru -Title "4. Domaine auswählen"
$varforUserprin = $UserName + "@" + $Domainselect
Get-aduser $UserName | Set-ADUser -UserPrincipalName $varforUserprin }
}
$MoveOuUser = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=Users,OU=N-Tree,DC=n-ad,DC=n-ergie" -SearchScope OneLevel | ForEach-Object Name | Out-GridView -PassThru -Title "3. Organisationseinheit vom User auswählen"
creatpw -Vorname $vorname1 -Nachname $nachname1 -user $UserName
get-aduser $UserName | Move-ADObject -TargetPath (Get-ADOrganizationalUnit -Filter {name -eq $MoveOuUser} -SearchBase "OU=Users,OU=N-Tree,DC=n-ad,DC=n-ergie" -SearchScope OneLevel)
Set-ADUser $UserName -Description "SD $Userdescription"
Write-host ""
Write-host "Passwort wurde gesetzt und User aktiviert/verschoben nach " $MoveOuUser
Write-host "SD Aufrag wurde ins Beschreibungsfeld hinzugefügt: " $Userdescription
Write-host "Text für Angaben in der Bestellung im Zwischenspeicher." -ForegroundColor Yellow
Write-host ""
$TagLOG = (Get-Date).tostring("dd.MM.yyyy")
$AngabenBesteller = $TagLOG + " merk:" + "`n" + "1. User PW: " + $Codename + " erstellt." + "`n" + "2. User aktiviert." + "`n" + "3. User verschoben: " + $MoveOuUser + "`n"
Set-Clipboard $AngabenBesteller
Read-Host -Prompt "Um fortzufahren beliebige Taste drücken..."
Menu-anzeigen
} else {
Write-host "Abruch durch Benutzer, Bitte Auswahl erneut ausführen."
Write-host ""
Read-Host -Prompt "Um fortzufahren beliebige Taste drücken..."
Menu-anzeigen
}
}
'2' {
cls
Write-host "Es wird der Homeordner erstellt und die Filerechte gesetzt."
Write-host "Zusätzlich wird die Rechtegruppe dem User hinzugefügt."
Write-host ""
$HomeUser = Read-Host "Username eingeben"
Write-host ""
$HomeUser = $HomeUser.ToUpper()
$usercheck = Get-ADUser $HomeUser
if ($usercheck) {
}
else {
Write-host "User: " + $HomeUser + " existiert nicht!"
Write-host ""
Read-Host -Prompt "Um fortzufahren beliebige Taste drücken..."
Menu-anzeigen
}
homelaufwerk-erstellen -BENUTZER $HomeUser
#CLS
Write-host ""
Write-host "Homelaufwerk wurde erstellt: \\n-ad.n-ergie\daten\HOME\HOME$HomeBuchstabe\$HomeUser" -ForegroundColor Yellow
Write-host ""
Write-host "Text für Angaben in der Bestellung im Zwischenspeicher." -ForegroundColor Yellow
$AngabenBesteller2 = "4. Homelaufwerk wurde erstellt." + "`n"
Set-Clipboard $AngabenBesteller2
Write-host ""
Read-Host -Prompt "Um fortzufahren beliebige Taste drücken..."
Menu-anzeigen
}
'3' {
cls
Write-host "Bitte die Abteilung aus der Bestellung eingeben."
Write-host "Danach Bitte den Usernamen aus der Bestellung."
Write-host ""
$3abteilungusername = Read-Host "Bitte Username eingeben"
Write-Host ""
#$3abteilunguser = "f-*"
#$3selectabt = get-adgroup -Filter {name -like "f-*" -or name -like "r-*"} -SearchBase "OU=Abteil,OU=Powerscale,OU=SystemGroups,OU=Resources,OU=N-Tree,DC=n-ad,DC=n-ergie" | select Name, DistinguishedName | Out-GridView -PassThru -Title "Folgende Gruppe wurde gefunden"
# Definiere die Suchbereiche (SearchBase)
$searchBases = @(
"OU=Abteil,OU=Main,OU=Powerscale,OU=SystemGroups,OU=Resources,OU=N-Tree,DC=n-ad,DC=n-ergie",
"OU=Organisation,OU=Groups,OU=N-Tree,DC=n-ad,DC=n-ergie"
)
# Array zum Speichern der Ergebnisse erstellen
$3selectabt = @()
# Schleife durch die Suchbereiche und führe die Suche aus
foreach ($searchBase in $searchBases) {
$results = Get-ADGroup -SearchBase $searchBase -Filter {Name -like "f-*" -or Name -like "r-*"} | select Name, DistinguishedName | Out-GridView -PassThru -Title "Folgende Gruppe wurde gefunden"
$3selectabt += $results
}
CLS
Write-Host "================ Userart auswählen ================"
Write-host ""
Write-Host "1: Wähle '1' intern"
Write-Host "2: Wähle '2' extern"
Write-Host "3: Wähle '3' S4EVU-N"
Write-Host "4: Wähle '4' WALLIX"
Write-Host "5: Wähle '5' ADAMO"
Write-Host "6: Wähle '6' ABDUL01"
Write-Host "7: Wähle '7' light"
Write-host ""
# Eingabe /Auswahl des Benutzers
$auswahl2 = Read-Host "Bitte die gewünschte Option wählen"
switch ($auswahl2){
'1' {
$gruppenauswahl2 = Import-Csv -Path H:\Sync\Dokumente\WindowsPowerShell\Bestellungen\intern.csv
[System.Collections.ArrayList]$LogNamesList = $gruppenauswahl2.Gruppen
foreach($3selectabtfirst in $3selectabt){
$LogNamesList.Add($3selectabtfirst.Name)
}
$auswahlintern = $LogNamesList | Out-GridView -PassThru -Title "Bitte alle Gruppen auswählen und mit Ok Bestätigen"
$auswahlintern
foreach($group in $auswahlintern){
Add-ADGroupMember -Identity $group -Members $3abteilungusername
}
}
'2' {
$gruppenauswahl2 = Import-Csv -Path H:\Sync\Dokumente\WindowsPowerShell\Bestellungen\extern.csv
[System.Collections.ArrayList]$LogNamesList = $gruppenauswahl2.Gruppen
foreach($3selectabtfirst in $3selectabt){
$LogNamesList.Add($3selectabtfirst.Name)
}
$auswahlextern = $LogNamesList | Out-GridView -PassThru -Title "Bitte alle Gruppen auswählen und mit Ok Bestätigen"
$auswahlextern
foreach($group in $auswahlextern){
Add-ADGroupMember -Identity $group -Members $3abteilungusername
}
}
'3' {
$gruppenauswahl2 = Import-Csv -Path H:\Sync\Dokumente\WindowsPowerShell\Bestellungen\s4evun.csv
[System.Collections.ArrayList]$LogNamesList = $gruppenauswahl2.Gruppen
foreach($3selectabtfirst in $3selectabt){
$LogNamesList.Add($3selectabtfirst.Name)
}
$auswahls4evun = $LogNamesList | Out-GridView -PassThru -Title "Bitte alle Gruppen auswählen und mit Ok Bestätigen"
$auswahls4evun
foreach($group in $auswahls4evun){
Add-ADGroupMember -Identity $group -Members $3abteilungusername
}
}
'4' {
$gruppenauswahl2 = Import-Csv -Path H:\Sync\Dokumente\WindowsPowerShell\Bestellungen\wallix.csv
[System.Collections.ArrayList]$LogNamesList = $gruppenauswahl2.Gruppen
foreach($3selectabtfirst in $3selectabt){
$LogNamesList.Add($3selectabtfirst.Name)
}
$auswahlwallix = $LogNamesList | Out-GridView -PassThru -Title "Bitte alle Gruppen auswählen und mit Ok Bestätigen"
$auswahlwallix
foreach($group in $auswahlwallix){
Add-ADGroupMember -Identity $group -Members $3abteilungusername
}
}
'5' {
$gruppenauswahl2 = Import-Csv -Path H:\Sync\Dokumente\WindowsPowerShell\Bestellungen\ADAMO.csv
[System.Collections.ArrayList]$LogNamesList = $gruppenauswahl2.Gruppen
foreach($3selectabtfirst in $3selectabt){
$LogNamesList.Add($3selectabtfirst.Name)
}
$auswahladamo = $LogNamesList | Out-GridView -PassThru -Title "Bitte alle Gruppen auswählen und mit Ok Bestätigen"
$auswahladamo
foreach($group in $auswahladamo){
Add-ADGroupMember -Identity $group -Members $3abteilungusername
}
}
'6' {
$gruppenauswahl2 = Import-Csv -Path H:\Sync\Dokumente\WindowsPowerShell\Bestellungen\ABDUL01.csv
[System.Collections.ArrayList]$LogNamesList = $gruppenauswahl2.Gruppen
foreach($3selectabtfirst in $3selectabt){
$LogNamesList.Add($3selectabtfirst.Name)
}
$auswahlabdul01 = $LogNamesList | Out-GridView -PassThru -Title "Bitte alle Gruppen auswählen und mit Ok Bestätigen"
$auswahlabdul01
foreach($group in $auswahlabdul01){
Add-ADGroupMember -Identity $group -Members $3abteilungusername
}
}
'7' {
$gruppenauswahl2 = Import-Csv -Path H:\Sync\Dokumente\WindowsPowerShell\Bestellungen\light.csv
[System.Collections.ArrayList]$LogNamesList = $gruppenauswahl2.Gruppen
foreach($3selectabtfirst in $3selectabt){
$LogNamesList.Add($3selectabtfirst.Name)
}
$auswahllight = $LogNamesList | Out-GridView -PassThru -Title "Bitte alle Gruppen auswählen und mit Ok Bestätigen"
$auswahllight
foreach($group in $auswahllight){
Add-ADGroupMember -Identity $group -Members $3abteilungusername
}
# Setze das Passwort für den Benutzer "light", um nie abzulaufen
$userLight = Get-ADUser -Identity "light" -Properties "PasswordNeverExpires"
if ($userLight.PasswordNeverExpires -eq $false) {
Set-ADUser -Identity "light" -PasswordNeverExpires $true
Write-Host "Passwort für den Benutzer 'light' wurde auf 'nie ablaufen' gesetzt." -ForegroundColor Green
} else {
Write-Host "Passwort für den Benutzer 'light' ist bereits auf 'nie ablaufen' gesetzt." -ForegroundColor Yellow
}
}
}
Write-Host ""
Write-host "Text für Angaben in der Bestellung im Zwischenspeicher." -ForegroundColor Yellow
Write-Host ""
$AngabenBesteller3 = "5. Rechte wurden hinzugefügt." + "`n" + $auswahllight
Set-Clipboard $AngabenBesteller3
Read-Host -Prompt "Um fortzufahren beliebige Taste drücken..."
Menu-anzeigen
}
'4' {
$AngabenBestellerGruppen = $null
cls
Write-host ""
$4RechtegruppenUser = Read-Host "Bitte Username eingeben"
Write-Host ""
$4selectabt = Get-ADGroup -Filter {name -like "f-Projekte*"} -SearchBase "OU=Projekte,OU=Powerscale,OU=SystemGroups,OU=Resources,OU=N-Tree,DC=n-ad,DC=n-ergie" | select Name, DistinguishedName | Out-GridView -PassThru -Title "Folgende Gruppe wurde gefunden"
Write-Host ""
foreach($group in $4selectabt.name){
Add-ADGroupMember -Identity $group -Members $4RechtegruppenUser
$AngabenBestellerGruppen += $group + "`n"
}
Write-Host $AngabenBestellerGruppen
Write-Host ""
Write-host "Text für Angaben in der Bestellung im Zwischenspeicher." -ForegroundColor Yellow
Write-Host ""
$AngabenBesteller4 = "6. Folgende Rechtegruppen wurden hinzugefügt:" + "`n" + $AngabenBestellerGruppen
Set-Clipboard $AngabenBesteller4
Read-Host -Prompt "Um fortzufahren beliebige Taste drücken..."
Menu-anzeigen
}
'5' {
$identity = Read-Host "Benutzername eingeben"
Get-ADUser -Identity $identity -Properties mail,UserPrincipalName | Format-List mail, UserPrincipalName
}
'q' {break}
}
}
Menu-anzeigen