trochę na temat statsów na Ex2kd. że PowerShell wymiata to już pisałem wiele razy, ale nie omieszkam jeszcze wiele napisać. „PowerShell wymiata„. wszystko co kiedyś było bardzo trudne, w porywach do niemożliwe i wymagało jakiejś tajemnej wiedzy – teraz leży okrakiem – nic tylko brać (; w przypadq Exchange trochę tajemnej wiedzy jest potrzebne żeby dobrać się do danych prawidłowo – w innym przypadq można ominąć ważne części. a w końcu w statystykach chodzi o dokładność.
najpierw kilka najprostszych poleceń do statystyk:
get-mailboxStatistics -database <dbname> #check stats for entire DB get-mailboxStatistics "<mailbox name>" #check stats for mbx
to jednak polecenie bardzo wredne i ma swoje humory. i to poważne. na początek fakt, że w środowisq wielodomenowym nie są przeszukiwane wszystkie domeny. wychodzą z tego niewidzialne skrzynki. sprawdzić to można:
get-ADServerSettings
chodzi konkretnie o parametr 'ViewEntireForest’ który baj difolt jest ustawiony na $false. dość dziwne jest dodatkowo to, że nawet jak się go przestawi na $true, to potrafi wrócić, z niewiadomych względów, do ustawienia standardowego /: więc jeśli skrzynki znaleźć nie można, warto go sprawdzić.
set-ADServerSettings -ViewEntireForest $true
kolejną ciekawostką jest to, że to polecenie zwraca statystyki *wszystkich* skrzynek. że to przecież dobrze? no nie koniecznie – jeśli wykonuje się jakieś ruchy, przenosi się skrzynki między bazami, to taka skrzyneczka jest de facto kopiowana, a jej cień zostaje w bazie danych aż do czasu osiągnięcia czasu retencji. trzeba zatem takie skrzynki odfiltrować, a odpowiada za to parametr 'disconnectDate’ – jeśli wartość jest $null, to znaczy, że skrzynka nie jest odłączona, to znaczy że jest dobra. wiedząc to, można sprawdzić zarówno ile zajmują skrzynki ale również ile miejsca się marnuje – odłączone mailboxy można wywalić przed czasem retencji. dodatkowo, ponieważ interesują nas wielkości, a te nie są standardowo wyświetlane, warto użyć 'select’:
Get-MailboxStatistics -Database "<mailbox database>" |where {$_.DisconnectDate -eq $null} |select displayname,TotalItemSize,databasename,lastlogontime|sort -property TotalItemSize -Descending
jeśli interesuje nas suma, to trzeba to sobie pododawać za pomocą 'measure’ ale to za chwilę. najpierw zagadka – czemu to polecenie nie zadziała zgodnie z oczekiwaniami? otóż sortujemy po wielkości, a te zwracane są w różnych jednostkach – MB, GB, PTB [to skrzynka CEO (; ], więc 3MB będą większe od 1GB. trzeba zatem wykonać trochę matematyki:
Get-MailboxStatistics -Database "<mailbox database>" |where {$_.DisconnectDate -eq $null} |select displayname,@{N="itemSize";E={[math]::round($_.totalitemsize.value.tobytes() /1MB,2)}},databasename,lastlogontime|sort -property ItemSize -Descending
i to niestety nie koniec. jednej rzeczy nie udało mi się odkryć. otóż po usunięciu skrzynki użytkownika i założeniu mu nowej, disconnectDate pozostaje $null /: a to oznacza, że cały czas pojawia się w statsach. za to mniej grymaśne jest polecenie get-mailbox a więc jeśli nie interesuje nas zużyte miejsce przez nieistniejące skrzynki, najlepiej korzystać od tej strony:
get-mailbox -database <mailbox database>|get-mailboxStatistics|select displayname,@{N="itemSize";E={[math]::round($_.totalitemsize.value.tobytes() /1MB,2)}},databasename,lastlogontime|sort -property ItemSize -Descending
jeśli nie interesują nas poszczególne skrzynki a bardziej wielkości całych baz:
Get-MailboxDatabase -Status|select name,@{N="DBsize";E={"$([math]::round($_.DatabaseSize.Tobytes() /1Gb, 2)) GB"}},databasesize|sort -Property databasesize -Descending|select name,dbsize
a co do mierzenia całej wielkości, to już odeślę do zewnętrznego wpisu, gdzie jest bardzo ładna i prosta funkcja, która to realizuje.
eN.