YuS_2
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Код: #requires -v 3.0 <# .SYNOPSIS Отображение альтернативных потоков файлов и каталогов .Description Скрипт предназначен для получения имен альтернативных потоков файлов и каталогов. Присваиваются отдельные идентификаторы для элементов и их альт. потоков, а также размер. .Parameter Elements Обязательный: Необходимо указать путь к каталогу, либо к отдельному файлу. Указанный каталог в выборку не включается, содержимым будут подкаталоги и файлы, находящиеся в этом каталоге. При рекурсии это поведение не изменится. .Parameter Root Переключатель: Используется для дополнительного включения в выборку указанного(ых), корневого(ых) каталога(ов) .Parameter Attributes Необязательный: Получает файлы и папки с указанными атрибутами. Этот параметр поддерживает все атрибуты и позволяет указывать сложные комбинации атрибутов. Соответствует параметру Attributes командлета Get-Childitem. .Parameter Hidden Переключатель: Для выбора файлов или каталогов с атрибутом Hidden .Parameter ReadOnly Переключатель: Для выбора файлов или каталогов с атрибутом ReadOnly .Parameter System Переключатель: Для выбора файлов или каталогов с атрибутом System .Parameter Force Переключатель: Для выбора всех файлов или каталогов с любым атрибутом .Parameter Recurse Переключатель: Для рекурсивного выбора файлов или каталогов .Example .\script.ps1 'd:\TEST' -force -rec|ogv Это пример рекурсивной выборки всех файлов и каталогов, с любым атрибутом, из корневого каталога d:\TEST и вывода результата в таблицу out-gridview .Example .\script.ps1 . -attr D+H,S -rec|ft Это пример рекурсивной выборки только каталогов с атрибутом Hidden или же выборки файлов и каталогов с атрибутом System из корневого каталога d:\TEST и вывода результата в таблицу out-gridview .Notes Created By YuS Version: 1.00 Date: 11/03/2019 Purpose/Change: Первая версия Version: 1.01 Date: 11/03/2019 Purpose/Change: Добавлен параметр -Root Version: 1.02 Date: 14/03/2019 Purpose/Change: Добавлен параметр -Attributes для более гибкого отбора .Link http://forum.ru-board.com/topic.cgi?forum=62&topic=30859&start=1360#17 #> [CmdletBinding()] Param ( [parameter(Mandatory=$true)] [string[]]$elements,[switch]$hidden,[switch]$readonly,$attributes, [switch]$system,[switch]$force,[switch]$recurse,[switch]$root ) function testpth {[CmdletBinding()] Param ( [parameter(Mandatory=$true)] [string[]]$elem,$attr,[switch]$hid,[switch]$read, [switch]$sys,[switch]$for,[switch]$rec ) $dpar = @{};$dpar.literalpath = $elem;if ($attr){$dpar.attributes = $attr} if ($hid){$dpar.hidden = $true};if ($read){$dpar.readonly = $true} if ($for){$dpar.force = $true};if ($rec){$dpar.recurse = $true} if ($sys){$dpar.system = $true} if(test-path $elem -pathtype container){ if($root){gi -lit $elem -force} dir @dpar } elseif (test-path $elem -pathtype leaf){ gi -lit $elem -force } else { write-host Path no correct -for red sleep -s 5 break } } function testitem($x){ if(test-path $x.fullname -patht container){ $fld = $x.fullname ((cmd /c "dir /ad/r ""$fld""").trim()| sls -patt '\d+ +\.:[^:]+:\$data').line|%{if(($a = $_ -split ':')[-2]){ new-object psobject -prop @{ Stream = $a[-2]; Length = [int]$($a[0] ` -replace '^(\d+) ?(\d*)[^\n]*','$1$2') } } } } elseif (test-path $x.fullname -patht leaf){ gi -lit $x.fullname -stream *|? stream -ne ':$data' } } function get-namestream ($item){ [array]$arr = testitem $item for ($i=0;$i -lt $arr.count;$i++){ [pscustomobject]@{ 'IDItem' = $script:k 'IDStream' = $i 'NameStream' = $arr[$i].stream 'Size' = $arr[$i].length 'Container' = if ($item.psiscontainer){$true}else{$false} 'Path' = $item.fullname } };if ($arr){$script:k++} } $k=0 $tpar=@{}; $tpar.elem = $elements;if($attributes){$tpar.attr = $attributes} if ($hidden){$tpar.hid = $hidden};if ($readonly){$tpar.read = $readonly} if ($force){$tpar.for = $force};if ($recurse){$tpar.rec = $recurse} if ($system){$tpar.sys = $system} $p = testpth @tpar|%{get-namestream $_} |group -prop iditem -ashash -asstr 0..($p.count)|%{$p."$_"} |
| Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:46 11-03-2019 | Исправлено: YuS_2, 09:56 14-03-2019 |
|