Sync AD Group Membership

Geregeld bellen eindgebruikers naar de helpdesk omdat zij iets niet kunnen wat hun collega wel kan. Dit is meestal terug te leiden tot het al dan niet behoren tot een AD groep waar de benodigde permissies aan zijn toegewezen.

Onderstaande script vereenvoudigt het opsporen alsook toewijzen van AD groepen dat bij de ene persoon wel al is gebeurd en bij de andere nog niet.

[CmdletBinding()]

param(

[string] $OrigUser = “john.smith”,

[string] $NewUser = “jane.doe”

)

begin{

#check powershell version

if ((Get-Host).Version.Major -lt 3){Write-Error “powershell version must be 3 or greater, script execution will end”;exit}

#load AD module and connect to a random domain controller

if (-not (get-module).name -eq “ActiveDirectory”){Import-Module ActiveDirectory -ErrorAction Stop}

Function CompareMemberShip($FromUser, $ToUser){

try{

#get memberOf from AD for each user

$OrigUserMember = (Get-ADUser $FromUser -Properties memberof).memberof

$NewUserMember = (Get-ADUser $ToUser -Properties memberof).memberof

#show groups only for $OrigUser

$groupsmissing = (compare $NewUserMember $OrigUserMember | ?{$_.sideindicator -eq “=>”})

}

catch {Write-warning “$($_.Exception)”}

return $groupsmissing

}

Function Add2NoFIMGroup ($groups){

foreach ($group in $groups){

if (-not ($group -match “CN=FIM*”)) {

try {Add-ADGroupMember -Identity $group.InputObject -Members $NewUser}

catch [Microsoft.ActiveDirectory.Management.ADException] {Write-warning “no permission to add this group: $group”}

catch {Write-warning “$($_.Exception)”}

}

}

}

}#begin

process{

$groupsmissing = CompareMemberShip $OrigUser $NewUser

Add2NoFIMGroup $($groupsmissing | Out-GridView -Title “from $OrigUser to $NewUser” -PassThru)

}#process

End{

}#end