Поиск файлов на Autoit

Задача — сделать отчет по файлам на компьютерах пользователей. При этом ищутся файлы по определенной маске. Требуется формировать файлы отчетов по каждому пользователю в домене.

Файлы скриптов можете скачать по этой ссылке: MSBRO_FileSearch

Скрипт:

#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

[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 будут с указанной вами задержкой появляться текстовые файлы с отчетами следующего вида:

---------------------------------
+ DATE:24:03:2017 TIME:12:21:14 +
---------------------------------
c:\Soft\Lan\DP_LAN_Intel_16060\Intel\FORCED\5x64\PRO100\RIS_INF\e100b645.zip
c:\Soft\Lan\DP_LAN_Intel_16060\Intel\FORCED\5x64\PRO1000\RIS_INF\e1000645.zip
c:\Soft\Lan\DP_LAN_Intel_16060\Intel\FORCED\5x64\PROXGBx\RIS_INF\ixt51x64.zip
c:\Soft\Lan\DP_LAN_Intel_16060\Intel\FORCED\5x86\OLD\cat.7z
c:\H.265 Cameras Datasheets\Cameras\Datasheet IPC6125-WDL-P,D.pdf
c:\H.265 Cameras Datasheets\Cameras\Datasheet__IPC6224-VRZ(-IR).pdf
c:\H.265 Cameras Datasheets\Cameras\Datasheet__IPC6225-VRZ(-SP).pdf

вроде все

Примечание: это можно реализовать и на PowerShell http://msbro.ru/index.php/archives/5588 но по практике все же лучше взять Autoit и скомпилирровать нормальный EXE файл.

Это работает гораздо надежнее.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *