CubanCigarNonExistentFSRM [File Server Resource Manager] to całkiem przydatne narzędzie, jednak braqje w nim jednego, bardzo ważnego raportu – wyszukiwanie plików należących do kont, które już nieistnieją. nie będę zamieszczał Skryptu – pokażę tylko sposób. taki PoC. tym razem potrzebowałem to zrobić na szybko. za jakiś czas pewnie ubiorę to w porządny kod bo zostało mi jeszcze kilka serwerów a póki co ‚sposób na szybko’:

 wyjaśnienie

wylistuj całą strukturę rekursywnie. dla każdego elementu z listy zapamiętaj nazwę elementu, rozmiar i pobierz ownera. ownera można sprawdzić przy pomocy polecenia get-ACL. get-ACL automatycznie rozwiązuje nazwy SID na nazwy kont. zatem jeśli nie rozwiąże nazwy [czyli pokaże się jakieś ‚S-1-5-21…’] – user nieistnieje.

całość jest bardzo niedoskonała – to, że nazwa nie została rozwiązana, nie gwarantuje, że konto nieistnieje. mogą być np. problemy z siecią, trustami, nie pamiętam jak się zachowuje dla uprawnień nadanych dla SIDHistory… w środowisq, w którym z tego korzystam takie problemy mnie nie interesują i dopuszczalny jest margines błędu na tego rodzaju scenariusze. całość i tak idzie do analizy biomaszynowej [czyt. istotę żywą].

aby utworzyć z tego skrypt… o to jeszcze sporo roboty. kod jest pasqdnie tymczasowy – braqje parametrów, obsługi błędów a finalnie powinna być zwracana tablica obiektów, żeby można było sobie dalej robić selecty czy inne wynalazki.

uwaga na zaokrąglenia

w pierwszej wersji nie podobało mi się, że wielkość zwracana jest w bytach. w końcu MB są wygodniejsze. i tu pojawia się pytanie – gdzie wstawić zaokrąglenie? ze względów na optymalizację zapytania, wszelkie operacje matematyczne należy umieszczać jak najdalej. ponieważ w kodzie są filtry, to aby liczyć jak najmniej, warto liczyć na minimalnej liczbie obiektów. zmieniłem zatem ‚$($size)’ na ‚$([math]::round($size,2))’. zapytanie zwróciło ok. 25o.ooo wyników. po zsumowaniu wartości liczbowych wyszło mi, że te pliki zajmują w sumie 1.2GB. mało. podejrzanie mało. wpadłem w pułapkę zaokrągleń. postanowiłem zatem nie zaokrąglać, zsumować bajty i dopiero ostateczną wielkość przekonwertować na GB. że będzie różnica to byłem pewny, niemniej skala mnie powaliła. wynik wyszedł powyżej 52GB (SIC!).

eN.