Skip to content

Instantly share code, notes, and snippets.

@barnettjw
Created January 10, 2023 19:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save barnettjw/4a72836a1be105158e4f4d7588d7d790 to your computer and use it in GitHub Desktop.
Save barnettjw/4a72836a1be105158e4f4d7588d7d790 to your computer and use it in GitHub Desktop.
Migrate Distro List Members
function Format-Name(){
param($name)
$array = $name -split ' '
[pscustomobject]@{
FirstName = $array[0].t
LastName = $array[1]
DisplayName = "$($array[1]), $($array[0])"
}
}
function Find-User(){
param($email)
Get-ADObject -Filter {mail -eq $email} -Properties Displayname, mail, ExtensionAttribute14 |
select Displayname, Mail, ExtensionAttribute14
}
function Compare-Users(){
param($group, $members)
$referenceObject = $($members | ForEach-Object { Format-Name $_ }).displayname
$differenceObject = $(Get-DistributionGroupMember $group).displayname
$diff = Compare-Object -ReferenceObject $referenceObject -DifferenceObject $differenceObject -SyncWindow ($referenceObject.length / 2)
if($diff -ne $null) {
Write-Warning "$group`: $(($diff | measure).count) differences"
$diff | ft
}
else { Write-Warning "$group`: No Diff" }
}
#region - add users to groups
$unresolvedUsers = @()
$distros | ForEach-Object {
$group = $_."Distro Email"
if($_.'Member List'.trim() -ne ''){
# get users to add to group
$members = $_.'Member List' -split ';'
# attempt to resolve a name to an email address
$resolvedUsers = @()
$members | ForEach-Object {
$user = Find-User -email $_
$count = $($user | Measure-Object).Count
if($count -ne 1) {
$unresolvedUsers += [pscustomobject]@{ name = $_; group = $group }
}
else { $resolvedUsers += $user.mail }
}
# add emails to group
$resolvedUsers | ForEach-Object {
try { Add-DistributionGroupMember -Identity $group -Member $_ -ErrorAction stop }
catch { Write-Warning $_ }
}
}
}
#endregion
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment