Главная > Powershell > Создание собственного критерия для группировки объектов в Powershell

Создание собственного критерия для группировки объектов в Powershell

Как известно в Powershell есть командлет Group-Object для группировки объектов по заданному критерию.

Например, для того,  чтобы сгруппировать файлы и каталоги в две группы можно выполнить следующую конструкцию:

Get-ChildItem | Group-Object -Property PsIsContainer

Оформив результаты в виде хеш-таблицы к этим группам можно обращаться по отдельности:

$FileOrDir = Get-ChildItem | Group-Object -Property PsIsContainer -AsHashTable

# Каталоги
$FileOrDir.$true
# Файлы
$FileOrDir.$false

Сравнительно недавно узнал, что можно создавать свои собственные критерии для группировки объектов. Делается это весьма нехитрым способом.

Для примера будем группировать файлы в три группы: меньше 1КБ – маленькие, от 1 КБ до 1 МБ – средние, больше 1 МБ – большие.

Создаём критерий:

$criteria = `
{
    if ($_.Length -lt 1KB)
    {
        'маленький'
    }
    elseif ($_.length -lt 1MB)
    {
        'средний'
    }
    else
    { 
        'большой'
    }
}

Теперь сгруппировав файлы по созданному критерию можно выделить например только большие файлы:

$files = Get-ChildItem | Where-Object {-not $_.PsIsContainer} |
Group-Object -Property $criteria -AsHashTable -AsString

# Только большие файлы
$files.большой

# Только маленькие файлы
$files.маленький
Реклама
Рубрики:Powershell Метки:
  1. Комментариев нет.
  1. No trackbacks yet.

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: