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

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

Ниже представлен скрипт на PowerShell который ищет на компьютере файлы по заданной маске. после того как файлы найдены создается отчет в текстовом файле по всем найденным файлам. При поиске файлов PowerShell исключает некоторые папки из поиска.

cls
cls
timeout /t 900
$comp = $env:computername
$user = $env:username
$file = 'C:\MSBRO\'+$comp+'_'+$user+'_'+'.txt'
$my_dir = get-wmiobject Win32_LogicalDisk | ? {$_.drivetype -eq 3} | % {get-psdrive $_.deviceid[0]} | 
       %{ $my_in = $_.Root
           get-childitem $my_in -force -recurse | 
           where { $_.FullName -notlike "*\Program Files\*" -and $_.FullName -notlike "*\Program Files (x86)\*" -and  $_.FullName -notlike "*\Windows\*" -and $_.extension -match "doc|xls|docx|xlsx|pdf|pst|zip|rar|7z|iso" }
}
$my_dir | out-file -filepath $file -Encoding utf8

Скрипт отрабатывает с задержкой 900 секунд с момента запуска чтобы пользователь смог нормально загрузиться в систему и все программы и службы стартовали.
Вообще по опыту могу сказать следующее: этот скрипт можно использовать в качестве примера.
Я не смог заставить его нормально работать на всех компьютерах в домене (далеко не на всех).

PowerShell работает медленно и тяжело. К тому же он довольно плохо поддается настройке через условие Where {}.
Если хотите нормальной и четкой работы — воспользуйтесь этой http://msbro.ru/index.php/archives/5556 статьей и у вас все будет работать быстро и хорошо.

Удачи!

 

Скачать готовый скрипт можете тут: MSBRO_Find_Files_v2

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

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