Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

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
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru