From bd27e39a0d9e235495571e75613d46a43e031de0 Mon Sep 17 00:00:00 2001 From: Alin Date: Thu, 24 Apr 2025 07:22:50 +0000 Subject: [PATCH] Add_User.ps1 Neu erstellt. --- Bestellungen/Add_User.ps1 | 407 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 407 insertions(+) create mode 100644 Bestellungen/Add_User.ps1 diff --git a/Bestellungen/Add_User.ps1 b/Bestellungen/Add_User.ps1 new file mode 100644 index 0000000..3bc7018 --- /dev/null +++ b/Bestellungen/Add_User.ps1 @@ -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 \ No newline at end of file