2016-05-12 1 views
-1

unter dem Code bei der Eingabe einiger Benutzer, aber fehlschlägt liefert keine erwarteten Ergebnisse bei der Abfrage für alle Benutzer in AD. Nicht zu verstehen, warum es auf Bulk-Nutzer im Vergleich zu einer relativ kleinen Benutzerliste FehlerPowershell - Abfrage aller AD-Benutzerobjekte; Anzahl der zurückgegebenen E-Mails oder kein Postfach

-Code unten:

$Users = @('user1',"user2",'user3','user4') 
$Mailboxes = $Users | Get-ADuser -pr * 


$OU = 'DC=local,DC=local,DC=org' 
$Mailboxes = Get-ADUser -Filter {SamAccountName -notlike '*$*'} -pr samaccountname 
$Mailboxes = Get-ADUser -Filter * -SearchBase $OU -Properties samaccountname 


foreach ($Mbx in $Mailboxes) 
{ 
    $ADUser = Get-ADUser $Mbx.SamAccountName -Properties * #Enabled,AccountExpirationDate 

    $UserObj = New-Object PSObject 
    $UserObj | Add-Member NoteProperty -Name "Username" -Value $ADUser.SamAccountName 

    If($mbx.msExchRecipientTypeDetails -eq $null) 
     {  
     $UserObj | Add-Member NoteProperty -Name "E-Mail" -Value "NoEmailAddress" 
     $UserObj | Add-Member NoteProperty -Name "email ItemCount" -Value "NoMailBox" 
     $UserObj | Add-Member NoteProperty -Name "TotalItemSize(GB)" -Value "NoMailBox" 
     Write-Host $Mbx.SamAccountName "has no mailbox" -ForegroundColor green 
     } 
    Else 
     { 
     If($mbx.msExchRecipientTypeDetails -eq 1) 
      { 
      $stats = $Mbx.EmailAddress | Get-MailboxStatistics | Select-Object TotalItemSize,TotalDeletedItemSize,ItemCount,LastLogonTime,LastLoggedOnUserAccount 
      $MbxSizeb = $stats.TotalItemSize -replace "(.*\()|,| [a-z]*\)" 
      $Tmp_gb = $MbxSizeb/1GB 
      $MbxSizeGB = [math]::Round($Tmp_gb,2) 

      $UserObj | Add-Member NoteProperty -Name "E-Mail" -Value $ADUser.EmailAddress 
      $UserObj | Add-Member NoteProperty -Name "email ItemCount" -Value $stats.ItemCount 
      $UserObj | Add-Member NoteProperty -Name "TotalItemSize(GB)" -Value $MbxSizeGB 
      } 
     } 
    $Report = $Report += $UserObj 
} 

Ergebnisse mit ausgewählten Benutzern enter image description here

Ergebnisse gegen alle Benutzer: enter image description here

Antwort

0

Sie fehlen die Eigenschaft msExchRecipientTypeDetails beim Auffüllen der Variablen $Mailboxes. Die Linien 5 und 6 sollten -Properties msExchRecipientTypeDetails


-Update lesen: Das war also nicht ganz korrekt. Sie können Ihren Code verwenden, wenn Sie If($mbx.msExchRecipientTypeDetails -eq $null) zu If($aduser.msExchRecipientTypeDetails -eq $null) ändern. Sie müssen den ADUser jedoch nicht erneut abrufen. $ Mailboxes ist eine Sammlung von ADUsers. Änderungen Linien 2,6,7 bis -Properties EmailAddress,msExchRecipientTypeDetails,SamAccountName

$Users = @('user1',"user2",'user3','user4') 
$Mailboxes = $Users | Get-ADuser -Properties EmailAddress,msExchRecipientTypeDetails,SamAccountName 

#$OU = 'DC=local,DC=local,DC=org' 
#$Mailboxes = Get-ADUser -Filter {SamAccountName -notlike '*$*'} -Properties EmailAddress,msExchRecipientTypeDetails,SamAccountName 
#$Mailboxes = Get-ADUser -Filter * -SearchBase $OU -Properties EmailAddress,msExchRecipientTypeDetails,SamAccountName 

$Report = @() 

foreach ($Mbx in $Mailboxes) { 
    switch ($Mbx.msExchRecipientTypeDetails) { 
     1 { 
      $Stats = $Mbx.EmailAddress | Get-MailboxStatistics | Select-Object TotalItemSize,ItemCount 
      $Report += [pscustomobject] @{ 
       'Username' = $_.SamAccountName 
       'E-Mail' = $Mbx.EmailAddress 
       'E-Mail ItemCount' = $Stats.ItemCount 
       'TotalItemSize(GB)' = ([math]::Round(($Stats.TotalItemSize -replace "(.*\()|,| [a-z]*\)")/1GB),2) 
      } 
      break 
     } 
     default { 
      $Report += [pscustomobject] @{ 
       'Username' = $_.SamAccountName 
       'E-Mail' = 'NoEmailAddress' 
       'E-Mail ItemCount' = 'NoMailBox' 
       'TotalItemSize(GB)' = 'NoMailBox' 
      } 
      break 
     } 
    } 
} 
+0

Bitte, tu das nicht 'prop *' es sei denn, dies eine kleine bis mittlere Domäne ist. Ich habe gerade ein Skript gegen eine Domain laufen lassen, die über einen Tag dauerte, bis ich fertig war. Ich suchte nur nach einer Gruppe, die von einem Computerobjekt betroffen war, und es endete mit über 12 Gigs Speicher. Es kann schnell summieren. – TheMadTechnician

+0

@TheMadTechnician Das scheint albern, dass Sie es irgendwo dort nicht gestoppt hätten. Dies konnte leicht behoben werden, indem * nicht verwendet wurde und -Properties verwendet wurde EmailAddress, msExchRecipientTypeDetails, SamAccountName –

+0

Ich habe '-Prop *' nicht verwendet, ich erhielt nur die Standardeigenschaften und speicherte nur die ObjectClass für jedes Objekt in einer Gruppe. Ich habe zwar mit fast 700.000 Benutzern und Computern gearbeitet, aber mein Punkt bleibt, dass sie, wenn sie das gesamte aktive Verzeichnis abfragen, wahrscheinlich nicht "-Prop *" für die Abfrage verwenden wollen. – TheMadTechnician

0

@Shawn Esterman - Dank für die Eingabe - Code unten funktioniert wie ein Charme. Explizit angegebene Eigenschaften, nach denen gesucht werden soll.

cls 

$Users = @() 
$Report = @() 
$UserObj = @() 
$ADUser = @() 
$Mbx = @() 
$OU = @() 
$Mailboxes = @() 

$Users = @("user1",'user2','user3','user4','user5') 
$Mailboxes = $Users | Get-ADuser -Properties EmailAddress,msExchRecipientTypeDetails,SamAccountName 


$OU = 'DC=local,DC=local,DC=local' 
$Mailboxes = Get-ADUser -SearchBase $OU -Filter {SamAccountName -notlike '*$*'} -ResultSetSize 50 -Properties EmailAddress,msExchRecipientTypeDetails,SamAccountName 

foreach ($Mbx in $Mailboxes) 
{ 
$UserObj = New-Object PSObject 
$UserObj | Add-Member NoteProperty -Name "Username" -Value $Mbx.SamAccountName 

If($mbx.msExchRecipientTypeDetails -eq $null) 
    {  
    $UserObj | Add-Member NoteProperty -Name "E-Mail" -Value "NoEmailAddress" 
    $UserObj | Add-Member NoteProperty -Name "email ItemCount" -Value "NoMailBox" 
    $UserObj | Add-Member NoteProperty -Name "TotalItemSize(GB)" -Value "NoMailBox" 
    Write-Host $Mbx.SamAccountName "has no mailbox" -ForegroundColor green 
    } 
Else 
    { 
    If($mbx.msExchRecipientTypeDetails -eq 1) 
     { 
     $stats = $Mbx.EmailAddress | Get-MailboxStatistics | Select-Object TotalItemSize,TotalDeletedItemSize,ItemCount,LastLogonTime,LastLoggedOnUserAccount 
     $MbxSizeb = $stats.TotalItemSize -replace "(.*\()|,| [a-z]*\)" 
     $Tmp_gb = $MbxSizeb/1GB 
     $MbxSizeGB = [math]::Round($Tmp_gb,2) 

     $UserObj | Add-Member NoteProperty -Name "E-Mail" -Value $Mbx.EmailAddress 
     $UserObj | Add-Member NoteProperty -Name "email ItemCount" -Value $stats.ItemCount 
     $UserObj | Add-Member NoteProperty -Name "TotalItemSize(GB)" -Value $MbxSizeGB 
     } 
    } 
$Report = $Report += $UserObj 

}

Verwandte Themen