Exchange 2010 usunięcie wyłączonych kont z grup dystrybucyjnych

This post is also available in: angielski

W celu utrzymania porządku w grupach dystrybucyjnych, dobrze jest od czasu do czasu usunąć z tych grup użytkowników którzy mają wyłączone konta.

Poniżej prezentujemy skrypt który przeszukuje wszystkie grupy dystrybucyjne, następnie usuwa z nich wszystkich użytkowników którzy są wyłączeni (RecipientTypeDetails – DisabledUser), oraz dodatkowo możemy określić z jakich OU mają to być użytkownicy.

 

Dodatkowo skrypt tworzy plik wynikowy .csv w którym zapisane są poniższe informacje:

  • nazwa grupy dystrybucyjnej
  • DisplayName użytkownika
  • SamAccountName
  • scieżka AD w której znajduje się użytkownik

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 
Set-AdServerSettings -ViewEntireForest $True
#sciezka oraz plik wynikowy
$OutFile = 'D:\Scripts\Logs\' 
$OutFile_LOG = $OutFile+'DL_removeusers_'+$(get-date).ToString('yyyyMMdd')+'.csv'

$totalObj = @()
# pobranie wszystkich grup dystrybucyjnych
$temp = Get-DistributionGroup -ResultSize Unlimited | 
ForEach-Object { 
  # pobranie uzytkownikow tylko wylaczonych i znajdujacych sie w okreslonych OU
  [array]$mem = Get-DistributionGroupMember -id $_ -ResultSize Unlimited | where-object {($_.identity -like "domain/company/Corporate1/Users/*" -or $_.identity -like "domain/company/Corporate2/Users*") -and $_.RecipientTypeDetails -eq "Disableduser"} 
  for ($i = 0; $i -lt $mem.Count; $i++) { 
    $member = $mem[$i].name 
    #usuniecie uzytkownika z grupy 
    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 
  } 
}

#utworzenie pliku wynikowego
$totalObj | Export-Csv -Encoding 'Unicode' $OutFile_LOG

 

Jeżeli chcemy uzyskać tylko listę użytkowników spełniających warunki, ale ich nie usuwać, wówczas musimy zakomentować linijkę jak poniżej:

 

# Remove-DistributionGroupMember -Identity $_ -Member $mem[$i].DistinguishedName -BypassSecurityGroupManagerCheck -confirm:$false

 

 

Print Friendly
Otagowany , , , .Dodaj do zakładek permalink.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>