ScanShares.ps1

Скрипт по просьбе знакомого сисадмина. Вычисляет соседние компьютеры с помощью net view, шары на них с помощью shares.dll (скомпилированную можно получить в комплекте с PowerTab), и выводит файлы попадающие под указанные маски. Если указать ключ -IncludeHidden то будут осмотрены и скрытые шары.

ScanShares.ps1
param ([string[]]$filter, [switch]$includeHidden) Write-Host "Loading $pwd\shares.dll" [void][System.Reflection.Assembly]::LoadFile("$pwd\shares.dll") net.exe view | where {$_ -match "\\\\(\S+)"} | foreach { $comp = $matches[1] Write-Host "Scanning $comp..." $shares = [Trinet.Networking.ShareCollection]::GetShares($comp) | foreach {$_.root} if (!$includeHidden) {$shares = $shares | where {$_ -notmatch '\$$'}} foreach ($share in $shares) { if ($share -ne $nothing) { Write-Host "`t$share" Get-ChildItem -path $share -Recurse -Include $Filter } } }

Получить список полных путей в текстовый файл можно так:

.\ScanShares.ps1 «*.avi»,»*.mov» | foreach {$_.fullname} | set-content scanlog.txt

А можно сделать так:

.\ScanShares.ps1 «*.avi»,»*.mov» | del -whatif

Последняя команда просто покажет какие файлы будут удалены (но не удалит их, благодаря ключу -whatif). Если результат устраивает — ключ -whatif можно убрать🙂

shares.dll должна быть в той же папке где скрипт. Ну или где угодно еще, только «$pwd\shares.dll» исправить надо будет.

Опубликовано в PowerShell. Комментарии к записи ScanShares.ps1 отключены
%d такие блоггеры, как: