Задача – сделать отчет по файлам на компьютерах пользователей. При этом ищутся файлы по определенной маске. Требуется формировать файлы отчетов по каждому пользователю в домене.
Файлы скриптов можете скачать по этой ссылке: MSBRO_FileSearch
Скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
#NoTrayIcon #include <Array.au3> #include <File.au3> #include <MsgBoxConstants.au3> #include<Date.au3> #include <WinAPIFiles.au3> Sleep(1400) ;пути реестра чтения параметров $myRegX86 = 'HKEY_LOCAL_MACHINE\SOFTWARE\MSBRO' $myRegX64 = 'HKEY_LOCAL_MACHINE64\SOFTWARE\MSBRO' $myRegPath ='' $my_Files = '' ;проверка архитектуры ОС - задание путей чтения реестра ;если нет записи Install = yes то завершить работу If Not StringInStr(@OSArch, "X86") Then $myRegPath = $myRegX64 Else $myRegPath = $myRegX86 EndIf ;Install - проверка установлены ли значения yes/no/не_определено ;проверка установки $Install = RegRead($myRegPath, "FileSearch_Install") If Not StringInStr($Install, "yes") Then exit Else ;чтение из реестра Local $my_FilterFiles = RegRead($myRegPath, "FileSearch_FilterFiles") Local $my_Exclude = RegRead($myRegPath, "FileSearch_Exclude") Local $my_FileReport = RegRead($myRegPath, "FileSearch_ReportPath") & "/" & @ComputerName & "-" & @username & ".txt" Local $my_Search_Drive = RegRead($myRegPath, "FileSearch_Drive") Local $my_StartDelay = RegRead($myRegPath, "FileSearch_StartDelay") EndIf Sleep($my_StartDelay) Local $my_Date = 'DATE:'&@MDAY&":"&@MON&":"&@YEAR&' TIME:'&@HOUR&':'&@MIN&':'&@SEC Local $my_FindFiles = $my_FilterFiles & "||" & $my_Exclude myFuncSearch() Func myFuncSearch() Local $aArray, $aDrives = DriveGetDrive($my_Search_Drive) If @error = 0 Then For $i = 1 To $aDrives[0] $aArray = _FileListToArrayRec($aDrives[$i] & "", $my_FindFiles, 13, 1, 1, 2) If @error Then $my_a = "Not found" ContinueLoop EndIf For $j = 1 To $aArray[0] $my_Files = $aArray Next Next EndIf EndFunc ;If Not FileExists($my_FileReport) Then _FileCreate($my_FileReport) ;FileDelete ( $my_FileReport) FileOpen ($my_FileReport, 2) FileWrite($my_FileReport, "---------------------------------" &@CRLF) FileWrite($my_FileReport, "+ " &$my_Date &" +" &@CRLF) FileWrite($my_FileReport, "---------------------------------" &@CRLF) FileWrite($my_FileReport, " " & @CRLF) FileClose($my_FileReport) ; Открывает файл и добавляет второй массив Local $my_Temp = FileOpen($my_FileReport, 1) ; 1 = добавляет _FileWriteFromArray($my_Temp, $my_Files, 1) FileClose($my_FileReport) ;ShellExecute($my_FileReport) |
скрипт компиллируется в EXE файл и через групповые политики распространяется на компьютеры пользователей.
после чего ставится групповой политикой на запуск exe файла при входе в систему пользователя.
важно чтобы exe запускался из под учетной записи пользователя.
далее либо создается reg файл следующего содержания (либо параметры задаются через создание соответствующих ключей в реестре через GPO) и этот reg файл добавляется в реестр:
Windows Registry Editor Version 5.00
1 2 3 4 5 6 7 |
[HKEY_LOCAL_MACHINE\SOFTWARE\MSBRO] "FileSearch_FilterFiles"="*.doc;*.docx;*.xls;*xlsx;*pdf;*.pst" "FileSearch_Exclude"="Windows;RECYCLE.BIN;Program Files (x86);Program Files;ProgramData;Temp;Games" "FileSearch_ReportPath"="\\\\srv-share-01\\my_shares$\\Files_on_Computers" "FileSearch_Install"="yes" "FileSearch_Drive"="FIXED" "FileSearch_StartDelay"=hex(b):10,27,00,00,00,00,00,00 |
Где параметры означают:
“FileSearch_FilterFiles” – типы файлов по маске которые ищутся
“FileSearch_Exclude” – исключаются папки из поиска
“FileSearch_ReportPath” – путь куда складываются отчеты
“FileSearch_Install” – разрешен ли поиск (YES означает что разрешен)
“FileSearch_Drive” – на каких дисках искать (FIXED – это значит что только на жестких дисках)
“FileSearch_StartDelay” – задержка срабатывания поиска (чтобы пользователи могли нормально зайти в систему. лучше поставить 5-30 минут)
В папке \srv-share-01\my_shares$\Files_on_Computers будут с указанной вами задержкой появляться текстовые файлы с отчетами следующего вида:
1 2 3 4 5 6 7 8 9 10 |
<em>---------------------------------</em> <em>+ DATE:24:03:2017 TIME:12:21:14 +</em> <em>---------------------------------</em> <em>c:\Soft\Lan\DP_LAN_Intel_16060\Intel\FORCED\5x64\PRO100\RIS_INF\e100b645.zip</em> <em>c:\Soft\Lan\DP_LAN_Intel_16060\Intel\FORCED\5x64\PRO1000\RIS_INF\e1000645.zip</em> <em>c:\Soft\Lan\DP_LAN_Intel_16060\Intel\FORCED\5x64\PROXGBx\RIS_INF\ixt51x64.zip</em> <em>c:\Soft\Lan\DP_LAN_Intel_16060\Intel\FORCED\5x86\OLD\cat.7z</em> <em>c:\H.265 Cameras Datasheets\Cameras\Datasheet IPC6125-WDL-P,D.pdf</em> <em>c:\H.265 Cameras Datasheets\Cameras\Datasheet__IPC6224-VRZ(-IR).pdf</em> <em>c:\H.265 Cameras Datasheets\Cameras\Datasheet__IPC6225-VRZ(-SP).pdf</em> |
вроде все
Примечание: это можно реализовать и на PowerShell http://msbro.ru/index.php/archives/5588 но по практике все же лучше взять Autoit и скомпилирровать нормальный EXE файл.
Это работает гораздо надежнее.