Недавно понадобилось найти все файлы *.pst на пользовательских рабочих станциях. А так как этих станций пара сотен, то решено было быстренько наваять скрипт на powershell для поиска файлов и отчета по ним. С запуском через gpo, само собой 🙂
1 2 3 4 |
$comp = $env:computername $user = $env:username $file = "\\sharename\PST_Search\"+$comp+"-"+$user+".txt" get-wmiobject Win32_LogicalDisk | ? {$_.drivetype -eq 3} | % {get-psdrive $_.deviceid[0]} | Where-Object -Property Free | %{ write-host 'Checking drive ' $_.Root; set-location $_.Root; Get-ChildItem -File -Filter *.pst -Recurse -Force; write-host 'Checked drive ' $_.Root; } > $file |
Данный скрипт ищем файлы только на локальных дисках пользователя, исключая флешки и дискеты 🙂 Сохраняем в serach.ps1 , например, и кладем в SYSVOL.
Для того, чтобы пользователь не видел окошка powershell при входе в систему, необходимо запускать скрипт следующим батником, который тоже кладем в SYSVOL:
1 |
START powershell.exe -WindowStyle Hidden \\domain.local\SYSVOL\domain.local\scripts\serach.ps1 |
Добавляем этот батник как сценарий входа в политике пользователя.
В результате получаем отчеты в общей папке \\sharename\PST_Search\ следующего вида:
Каталог: C:\username\Documents\Файлы Outlook
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 14.08.2013 9:04 1795072 tytyent.ru.pst
-a--- 14.08.2013 9:04 704988160 Юзернейм.pst
Если есть Active Directory то нет смысла делать logon скрипт. Извлекается список ПК в сети, и дальше поиск нужной информации по сети. Такой подход не требует создание сетевых шар и изменение групповых политик. Особенно удобно если у админа нет доступа к серверам. Хотя может быть трудность с тем что комп будет в сети всего 10 минут, и не успеешь обнаружить его.