#Dieses Skript exportiert alle Gruppenzugehörigkeiten und den "Distinguished Name" in eine CSV Datei. Anschließend wird der User deaktiviert und in die OU Deaktivierte User verschoben.
#Der Dateiname setzt sich dann aus dem komplettenNamen des deaktivierten Users und dem Datum zusammen, an dem dieses Script ausgeführt wurde.
#Windows Forms Assembly laden
Add-Type -AssemblyName System.Windows.Forms
cls
#Optionale Information. Kurzbeschreibung und Ersteller des Scriptes
Write-Host "User deaktivieren und verschieben"
#Funktion zur Anzeige eines Eingabedialoges fuer den Namen des Mitarbeiters
function ReadOU-InputBoxDialog([string]$Message, [string]$WindowTitle, [string]$DefaultText)
{
Add-Type -AssemblyName Microsoft.VisualBasic
return [Microsoft.VisualBasic.Interaction]::InputBox($Message, $WindowTitle, $DefaultText)
}
$yesno = [System.Windows.Forms.MessageBox]::Show("Das Exchange-Postfach muss vor der Ausführung dieses Skriptes verschoben werden. Ist das Exchange-Postfach bereits verschoben worden?","Hinweis",[System.Windows.Forms.MessageBoxButtons]::YesNo)
if ($yesno -eq [Windows.Forms.DialogResult]::Yes)
{
#Optionale Information. Laden des Active Directory Moduls
Write-Host "Active Directory Modul wird geladen..."
Import-Module ActiveDirectory
##########################################
## CSV Export ##
##########################################
#Abfrage des Mitarbeiternamens. Das Format muss vorname.nachname sein.
if ($userName = ReadOU-InputBoxDialog -Message "Bitte vorname.nachname eingeben." -WindowTitle "Vorname.Nachname" -ne [Windows.Forms.DialogResult]::Abort)
{
if ($ticketnummer = ReadOU-InputBoxDialog -Message "Bitte Ticketnummer eingeben. Z.B.: 123456" -WindowTitle "Ticketnummer" -ne [Windows.Forms.DialogResult]::Abort)
{
#Benötigte Variablen
$dateToday = (Get-Date).ToString('dd-MM-yyyy')
$fileName = "$username" + "_" + "$dateToday.csv"
$pfad = "T:"
# Custom Objekt für die CSV Tabelle anlegen
$newrow = New-Object PSObject -Property @{
distinguishedName = ""
Name = ""
}
# Export nach CSV
Write-Host "CSV Datei wird exportiert..."
$newrow | Export-CSV "$pfad$fileName" -notypeinformation -Delimiter ";"
$user = Get-ADUser $userName | Select distinguishedName | Export-CSV "$pfad$fileName" -notypeinformation -Append -Force -Delimiter ";"
$gruppen = Get-ADPrincipalGroupMembership -Identity $userName | Select Name | Export-CSV "$pfad$fileName" -notypeinformation -append -Force -Delimiter ";"
#Testen, ob Datei erfolgreich erstellt wurde
if (Test-Path "$pfad$fileName")
{
Write-Host $fileName " in " $pfad " erstellt."
#Information über die Erstellung einer CSV Datei.
[System.Windows.Forms.MessageBox]::Show($fileName + " in " + $pfad + " erstellt.","Fertig",[System.Windows.Forms.MessageBoxButtons]::OK)
}
else
{
[System.Windows.Forms.MessageBox]::Show("Fehler! Keine CSV Datei erstellt.","Fehler",[System.Windows.Forms.MessageBoxButtons]::OK,[System.Windows.Forms.MessageBoxIcon]::Error)
Exit
}
########################################################
## Gruppen löschen, User verschieben und deaktivieren ##
########################################################
Write-Host "Gruppen von $username werden gelöscht"
Get-ADPrincipalGroupMembership -Identity $userName | where {$_.name -ne 'Domain Users'} | % {Remove-ADPrincipalGroupMembership -Identity $userName -MemberOf $_ -Confirm:$false}
Write-Host "$username wird in Deaktivierte User verschoben"
Get-ADUser $userName | Move-ADObject -TargetPath 'OU=Deaktivierte Accounts,DC=test,DC=test'
Write-Host "$userName wird deaktiviert"
Disable-ADAccount -Identity $userName
Write-Host "Beschreibung von $userName wird angepasst"
get-aduser $userName -Properties Description | ForEach-Object { Set-ADUser $_ -Description "$($_.Description) DEAKTIVIERT #$ticketnummer" }
Write-Host "Script Ende"
Write-Host "==========="
$yesNoCloseWindows = Read-Host "Fenster schließen? y/n: "
if ($yesNoCloseWindows -eq "y")
{
Exit
}
else
{
Read-Host
}
}
else
{
[System.Windows.Forms.MessageBox]::Show("Abbrechen geklickt! Keine CSV Datei erstellt.","Abbruch",[System.Windows.Forms.MessageBoxButtons]::OK,[System.Windows.Forms.MessageBoxIcon]::Exclamation)
Exit
}
}
else
{
[System.Windows.Forms.MessageBox]::Show("Abbrechen geklick Keine CSV Datei erstellt.","Abbruch",[System.Windows.Forms.MessageBoxButtons]::OK,[System.Windows.Forms.MessageBoxIcon]::Exclamation)
Exit
}
}
else
{
[System.Windows.Forms.MessageBox]::Show("Abbruch. Bitte erst das Exchange Postfach verschieben.","Fehler",[System.Windows.Forms.MessageBoxButtons]::OK,[System.Windows.Forms.MessageBoxIcon]::Exclamation)
Exit
}