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

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

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

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

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

iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кодировка файла: UTF-8 with BOM

Код:
<#
    .SYNOPSIS
    Получение свойств файлов
    .DESCRIPTION
    Получение свойств файлов, shell windows
    .PARAMETER Path
    Полное имя файла/папки для которых необходимо получить свойства
    (по умолчанию текущая директория $PWD)
    .PARAMETER Id
    Идентификатор свойства
    .PARAMETER Force
    Переключатель. Выводить скрытые/системные…
    .PARAMETER List
    Вывести только список расширенных свойств
    .EXAMPLE
    C:\PS> .\Get-FileInfo.ps1 -Id 10 | Format-Table Name, Length, Владелец
    Получить дополнительное свойство "Владелец" у всех файлов в текущей папке
    и отобразить свойства (Name, Length, Владелец) в виде таблицы.
    .EXAMPLE
    C:\PS> .\Get-FileInfo.ps1 | Format-List *
    Получить доступные свойства у всех файлов в текущей папке
    и вывести их в виде списка.
    .EXAMPLE
    C:\PS> ..\Get-FileInfo.ps1 -List
    Получить только список свойств (Идентификатор свойства, Название свойства)
    .NOTES
    Автор:          iNNOKENTIY21
#>
 
param (
    # Полный путь к папке
    [ValidateNotNullOrEmpty()]
    [ValidateScript( { Test-Path -Path $_ } )]
    [string] $Path = $PWD,
 
    # Идентификатор свойства
    [int[]] $Id = @(0..([int16]::MaxValue)),
 
    # Включить скрытые/системные файлы/папки
    [switch] $Force,
 
    # Вывести только список расширенных свойств
    [switch] $List
)
 
function Get-List {
    if (Test-Path -LiteralPath $Path -PathType Container) {
        $Folder = $ShellApp.Namespace($Path)
    } else {
        $Folder = $ShellApp.Namespace((Split-Path -LiteralPath $Path))
    }
 
    foreach ($Item in $Id) {
        $Name = $Folder.GetDetailsOf($null, $Item)
 
        if (!$Name) {
            break
        }
 
        [PSCustomObject] @{
            Id   = $Item
            Name = $Name
        }
    }
}
 
function Get-Info {
    if (Test-Path -LiteralPath $Path -PathType Container) {
        $Params = @{
            LiteralPath = $Path
            File        = $true
            Force       = $Force
        }
 
        $Folder = $ShellApp.Namespace($Path)
        $Files = Get-ChildItem @Params # Спрашивать, если много файлов?
    } else {
        $Files = Get-Item -LiteralPath $Path
        $Folder = $ShellApp.Namespace((Split-Path -LiteralPath $Path))
    }
 
    foreach ($File in $Files) {
        $FileName = $Folder.ParseName($File.Name)
 
        foreach ($Item in $Id) {
            $Name = ($Folder.GetDetailsOf($null, $Item))
            $Value = ($Folder.GetDetailsOf($FileName, $Item))
 
            if ($Name -and $Value) {
                $File |
                Add-Member -MemberType NoteProperty -Name $Name -Value $Value
            }
        }
 
        $File
    }
}
 
$ShellApp = New-Object -ComObject Shell.Application
 
if ($List) {
    Get-List
    Exit
}
 
Get-Info

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 09:17 18-09-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