CopyADGroupMembers.ps1
#requires -modules ActiveDirectory <#PSScriptInfo .VERSION 1.0 .GUID 9a290e31-4f73-4e33-a831-28cecd4e40cf .AUTHOR Bart Jacobs .COMPANYNAME .COPYRIGHT .TAGS .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES ActiveDirectory .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES Copy AD group members from one AD group to another AD group in the same domain .PRIVATEDATA #> <# .DESCRIPTION This script copies members from one AD group to another #> Param() #Initialize variables $SelectedDomain = "" $SourceGroup = "" $DestinationGroup = "" Add-Type -AssemblyName PresentationFramework #Get the AD DomainName $ADForestInfo = Get-ADForest $SelectedDomain = $ADForestInfo.Domains | Out-GridView -Title "Select AD Domain" -OutputMode Single #Check for a valid DomainName if ($SelectedDomain -eq $null) { [System.Windows.MessageBox]::Show("AD Domain not selected","Error","OK","Error") exit } #Find the right AD Domain Controller $dc = Get-ADDomainController -DomainName $SelectedDomain -Discover -NextClosestSite #Get all groups from selected and select source and destination groups $ADGroupList = Get-ADGroup -filter * -Server $SelectedDomain | sort name | select Name $SourceGroup = $ADGroupList | Out-GridView -Title "Select the AD Group Name who's members needs to be copied" -OutputMode Single $DestinationGroup = $ADGroupList | Out-GridView write-Title "Select the AD Group Name that needs to be populated" -OutputMode Single #Basic checks for selecte groups if ($SourceGroup -eq $null) { [System.Windows.MessageBox]::Show("Source group not selected","Error","OK","Error") exit 1 } if ($DestinationGroup -eq $null) { [System.Windows.MessageBox]::Show("Destination group not selected","Error","OK","Error") exit 1 } if ($SourceGroup -eq $DestinationGroup) { [System.Windows.MessageBox]::Show("Source and Destination groups can not be the same","Error","OK","Error") exit 1 } #Fetch all members from selecte source group $member = Get-ADGroupMember -Identity $SourceGroup.Name -Server $dc.HostName[0] #Try to populate the selected destination group with members Try { Add-ADGroupMember -Identity $DestinationGroup.name -Members $member -Server $dc.HostName[0] $message = "Members of AD Group " + $SourceGroup.name + "have been copied to AD Group " + $DestinationGroup.Name [System.Windows.MessageBox]::Show($message,"Finished","OK","Asterisk") } Catch { [System.Windows.MessageBox]::Show("AD Group membership copy failed","Error","OK","Error") } |