statystki na Exchange 2o1o
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.
Zmiany w grupach mailowych
przy zmianach w grupach mailowych na Exchange robi się niezłe zamieszanie. podstawowe powody to:
przykładowy scenariusz
w takim przypadku trzeba usunąć stare grupy dystrybucyjne [usunięcie grupy security to szaleństwo], przerobić grupy security na uniwersalne [komentarz za chwilę] i przypisać im stary email. potem wykonać ‘update address book’. i teraz zaczyna się masakra. po pierwsze outlooki *teoretycznie* powinny odświeżyć książkę adresową w ciągu 24h – moja obserwacja tego nie potwierdza. ale dużo gorsza sprawa jest z ‘auto-complete’, który usilnie będzie próbował wysyłać maile na nieistniejący adres X5oo.
jedną z opcji byłoby dodanie skryptu logowania, który usuwa pliki NK2… ale nie jestem przekonany do takiej operacji. drugą, bardziej przeźroczystą opcją, jest po prostu dodanie starego adresu X5oo do nowej grupy. link do artu, który to w pełni opisuje jest tutaj.
grupy uniwersalne
wymuszenie korzystania z grup uniwersalnych jest imho głupie. rozumiem, że “czasy się zmieniają i nic nie jest takie jak przedtem” ale:
oczywiście nadal można korzystać z globalnych, ale nie jest to wpierane [głównie przez interfejs] co jest dość upierdliwe. dziwna decyzja /:
eN.