Hier mal mein erster Entwurf dazu. Kann sicher noch einiges ausgebaut werden, aber funktioniert soweit erst einmal. Vielen Dank für die Tipps!
$Changes = Import-Csv -Delimiter "`t" -Path .\veraenderungen.txt | Where-Object {$_.datum -eq "$(Get-Date -UFormat "%d.%m.%Y")"}
$logfile = ".\log.txt"
Function LogWrite
{
Param([string]$logline)
$logdate = get-date -format "yyyy-MM-dd HH:mm:ss"
$text = "["+$logdate+"] " + $logline
$text >> $logfile
}
ForEach($Change in $Changes){
$username = $Change.Benutzer
# prüfe ob Benutzer exsistiert
if(Get-ADUser -Filter {SamAccountName -eq $username})
{
switch($Change.Aktion)
{
add-group {
$group = $Change.Parameter
# prüfe ob Gruppe existiert
if(Get-ADGroup -Filter {SamAccountName -eq $group}) {
Add-ADGroupMember -Identity $group -Members $username
LogWrite -logline "Benutzer $username der Gruppe $group hinzugefügt"
}
else {
LogWrite -logline "Gruppe $group wurde nicht gefunden"
}
}
remove-group {
$group = $Change.Parameter
if(Get-ADGroup -Filter {SamAccountName -eq $group}) {
Remove-ADGroupMember -Identity $group -Members $username -Confirm:$false
LogWrite -logline "Benutzer $username aus der Gruppe $group gelöscht"
}
else {
LogWrite -logline "Gruppe $group wurde nicht gefunden"
}
}
}
}
else
{
LogWrite -logline "Benutzer $username wurde in der AD nicht gefunden"
}
}