# script to Update depatment groups based on the Users in the OU # requires PowerShell 2.0 # requires Windows 2008 PowerShell Active Directory Module # Version 1.0 - erste Version # Version 1.1 - Erweiterung Skip Users already in group # # Pending # -ErrorHandling/Loggin [string]$deptgroupprefix="dept-" [string]$abteilungOUbase="ou=department,dc=w08dom,dc=test" Import-Module ActiveDirectory foreach ($group in (get-adgroup -filter 'samaccountname -like "dept-*"')) { write-host "======== Processing $group =======" [string]$abteilung = $group.Name.Replace($deptgroupprefix,"") [string]$ou = "ou=$abteilung,$abteilungOUbase" Write-Host " Abteilung: $abteilung" Write-Host " UserOU : $ou" write-host "-- Addiere Abteilungskonten --" foreach ($User in (get-adUser -filter:* -searchbase:$ou)) { write-host " Benutzer: $User.name" -nonewline $alreadymember = $false foreach ($member in (get-adgroupmember -identity $group)) { if ($member.distinguishedname -eq $User.distinguishedname) { $alreadymember = $true write-host " Already Member" } } if ($alreadymember -eq $false) { write-host " ADD Member" add-adgroupmember $group $User } } write-host "-- Entferne fremde Konten --" foreach ($member in (get-adgroupmember $group)) { write-host " Mitglied: "$member -nonewline if ($member.distinguishedName.tolower().endswith($ou.tolower())) { write-host "-> Nicht Entfernen" } else { write-host "-> Entfernen" remove-adgroupmember -identity $group -members $member -confirm:$false } } }