I am trying to be a better PowerSheller. I thought I would create a post with queries I have figured out. I hope to keep adding more.
- We needed to change a whole bunch of distribution groups – append them with “-NewName”. This query created our origianl list, the last 50 distribution groups created, with columns representing the old and new names:
Get-ADGroup -filter {GroupCategory -eq "Distribution"} -Properties *| Select-Object -Property Name,whenCreated,mail, @{N="NewMail";E={$_.mail.replace("@","-NewName@")}} -last 50
- Similar to the query above, but adds a column indicating if we had changed the name or not – a status column. I used a conditional inside of an Expression field. And I looped through an array retuned by “proxyAddresses”
Get-ADGroup -filter {GroupCategory -eq "Distribution"} -Properties * | sort created | select Name, @{N="NewName";E={if($_.Name -like "*-NewName"){$_.Name}else{$_.Name+"-NewName"}}}, @{N="NewMail";E={if($_.Mail -like "*[email protected]"){$_.Name}else{$_.Mail.replace("@","-NewName@")}}}, @{Name="proxyAddresses";Expression={foreach ($SMTP in $_.proxyAddresses){if ($SMTP.ToLower().StartsWith("smtp:")){$SMTP}}}}, @{N="Completed";E={if($_.Name -like "*-NewName"){"Completed"}else{"ToDo"}}} | convertto-csv > MasterList.csv
- Another variation with a conditional inside of the filter
Get-ADGroup -filter {GroupCategory -eq "Distribution" -and Name -like "*-NewName"} -Properties * | sort created | select Name,Samaccountname,Displayname,Mailnickname,Mail, @{Name="proxyAddresses";Expression={foreach ($SMTP in $_.proxyAddresses){if ($SMTP.ToLower().StartsWith("smtp:")){$SMTP}}}} | convertto-csv > Completed.csv
- More to come. Maybe these will be helpful to some searchers out there.
Comments are closed.