Так как я был уведомлен, я не мог попросить написать код, пересматривая сообщение.
У меня есть этот код. Он работает, но не извлекает какие-либо данные в файл cvs и не удаляет пользователей из DL. Не уверен, почему это не работает. Это выполняется на локальном сервере Exchange 2010 с консолью управления обменом. Я уверен, что это то, где я запутался, но не уверен, как это исправить. where-object {($ _. identity -eq "o365.test3")}
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
#path to output file
$OutFile = 'C:\Scripts\Logs\'
$OutFile_LOG = $OutFile+'DL_removeusers_'+$(get-date).ToString('yyyyMMdd')+'.csv'
$totalObj = @()
#get all distribution groups
$temp = Get-DistributionGroup -ResultSize Unlimited |
ForEach-Object {
#get certain user from Distribution Lists
[array]$mem = Get-DistributionGroupMember -id $_ -ResultSize Unlimited | where-object {($_.identity -eq "o365.test3") }
for ($i = 0; $i -lt $mem.Count; $i++) {
$member = $mem[$i].name
#remove user from distribution group
Remove-DistributionGroupMember -Identity $_ -Member $mem[$i].DistinguishedName -BypassSecurityGroupManagerCheck -confirm:$false
$obj = New-Object System.Object
$obj | Add-Member -MemberType NoteProperty -Value $_.Name -Name 'Distribution Group' -Force
$obj | Add-Member -MemberType NoteProperty -Value $member -Name 'Members' -Force
$obj | Add-Member -MemberType NoteProperty -Value $mem[$i].SamAccountName -Name 'SamAccountName' -Force
$obj | Add-Member -MemberType NoteProperty -Value $mem[$i].identity -Name 'OU' -Force -PassThru
$totalObj += $obj
}
}
#create output file
$totalObj | Export-Csv $OutFile_LOG
Read-Host -Prompt “Press Enter to exit”