sthPipelineTools — модуль, облегчающий работу с механизмом конвейера в PowerShell

Если вы часто используете в своей работе конвейер или же решили познакомиться с ним поближе, вам может быть полезен модуль sthPipelineTools.

Входящая в него функция Get-sthPipelineCommand позволяет определить, поддерживает ли командлет или функция конвейерную обработку данных.

Функция Get-sthPipelineParameter позволяет получить список параметров, поддерживающих получение данных по конвейеру, а также их свойства, такие, как соответствующие им псевдонимы, ожидаемый тип данных, набор параметров, в который они входят, является ли он набором параметров по умолчанию, является ли параметр обязательным (Mandatory), а также, какие из способов сопоставления поступающих данных — ByValue, ByPropertyName — он может использовать.

Вы можете установить модуль sthPipelineTools из PowerShell Gallery:

Install-Module sthPipelineTools

Также вы можете найти его на GitHub:
https://github.com/sethvs/sthPipelineTools

Итак, как с ним работать.

Get-sthPipelineCommand

Пример 1.

Команда проверяет, поддерживает ли командлет Get-Process получение данных по конвейеру.

Get-sthPipelineCommand -Command Get-Process
Command     SupportsPipeline
-------     ----------------
Get-Process             True

Пример 2.

Команда проверяет, поддерживает ли функция Get-Verb получение данных по конвейеру.

Get-sthPipelineCommand -Command Get-Verb
Command  SupportsPipeline
-------  ----------------
Get-Verb             True

Пример 3.

Команда проверяет, поддерживает ли командлет Get-Service получение данных по конвейеру.

При запросе используется его псевдоним — «gsv».

Get-sthPipelineCommand -Command gsv
Command     SupportsPipeline
-------     ----------------
Get-Service             True

Пример 4.

Первая команда получает объект [CmdletInfo], описывающий командлет Get-Process.

Вторая команда получает объект [FunctionInfo], описывающий функцию Get-Verb.

Третья команда получает объект [AliasInfo], описывающий псевдоним «gsv».

Четвертая команда проверяет, поддерживают ли эти команды получение данных по конвейеру.

$command = Get-Command -Name Get-Process
$function = Get-Command -Name Get-Verb
$alias = Get-Command gsv

Get-sthPipelineCommand -Command $command, $function, $alias
Command     SupportsPipeline
-------     ----------------
Get-Process             True
Get-Verb                True
Get-Service             True

Пример 5.

Первая команда получает объект [CmdletInfo], описывающий командлет Get-Process.

Вторая команда получает объект [FunctionInfo], описывающий функцию Get-Verb.

Третья команда получает объект [AliasInfo], описывающий псевдоним «gsv».

Четвертая команда проверяет, поддерживают ли эти команды, а также Get-PSDrive и Get-Content (мы использовали его псевдоним — ‘cat’), получение данных по конвейеру.

В этот раз мы передали данные функции Get-sthPipelineCommand при помощи конвейера.

$command = Get-Command -Name Get-Process
$function = Get-Command -Name Get-Verb
$alias = Get-Command gsv

$command, $function, $alias, 'Get-PSDrive', 'cat' | Get-sthPipelineCommand
Command     SupportsPipeline
-------     ----------------
Get-Process             True
Get-Verb                True
Get-Service             True
Get-PSDrive             True
Get-Content             True

Пример 6.

Первая комада получает массив команд, входящих в модуль ‘Microsoft.PowerShell.Management’.

Вторая команда проверяет, поддерживают ли они получение данных по конвейеру.

$commands = Get-Command -Module 'Microsoft.PowerShell.Management'
Get-sthPipelineCommand -Command $commands

Пример 7.

Команда проверяет, поддерживает ли командлет Get-Process получение данных по конвейеру.

Результат содержит информацию о Get-Process, а также сообщает о том, что команда Non-ExistingCommand не была найдена.

Get-sthPipelineCommand -Command Get-Process, Non-ExistingCommand
Command     SupportsPipeline
-------     ----------------
Get-Process             True

Commands not found:
Non-ExistingCommand

Пример 8.

Команда проверяет, поддерживает ли командлет Get-Process получение данных по конвейеру.

Так как мы указали параметр -HideNotFoundCommands, функция не будет сообщать о несуществующей команде.

Get-sthPipelineCommand -Command Get-Process, Non-ExistingCommand -HideNotFoundCommands
Command     SupportsPipeline
-------     ----------------
Get-Process             True

Get-sthPipelineParameter

Пример 1.

Команда отображает информацию о параметрах командлета Get-Process, которые поддерживают получение данных по конвейеру.

Get-sthPipelineParameter -Command Get-Process
   Command: Get-Process

ParameterName Aliases     ParameterType                ParameterSet            Mandatory ByValue ByPropertyName
------------- -------     -------------                ------------            --------- ------- --------------
Name          ProcessName System.String[]              NameWithUserName        False     False   True
Name          ProcessName System.String[]              Name (IsDefault)        False     False   True
Id            PID         System.Int32[]               IdWithUserName          True      False   True
Id            PID         System.Int32[]               Id                      True      False   True
InputObject               System.Diagnostics.Process[] InputObjectWithUserName True      True    False
InputObject               System.Diagnostics.Process[] InputObject             True      True    False
ComputerName  Cn          System.String[]              Id                      False     False   True
ComputerName  Cn          System.String[]              Name (IsDefault)        False     False   True
ComputerName  Cn          System.String[]              InputObject             False     False   True

Пример 2.

Команда отображает информацию о параметрах функции Get-Verb, которые поддерживают получение данных по конвейеру.

Get-sthPipelineParameter -Command Get-Verb
   Command: Get-Verb

ParameterName Aliases ParameterType   ParameterSet       Mandatory ByValue ByPropertyName
------------- ------- -------------   ------------       --------- ------- --------------
verb                  System.String[] __AllParameterSets False     True    False

Пример 3.

Команда отображает информацию о параметрах командлета Get-Service, которые поддерживают получение данных по конвейеру.

При запросе используется его псевдоним — «gsv».

Get-sthPipelineParameter -Command gsv
   Command: Get-Service

ParameterName Aliases     ParameterType                             ParameterSet        Mandatory ByValue ByPropertyName
------------- -------     -------------                             ------------        --------- ------- --------------
Name          ServiceName System.String[]                           Default (IsDefault) False     True    True
ComputerName  Cn          System.String[]                           __AllParameterSets  False     False   True
InputObject               System.ServiceProcess.ServiceController[] InputObject         False     True    False

Пример 4.

Первая команда получает объект [CmdletInfo], описывающий командлет Get-Process.

Вторая команда получает объект [FunctionInfo], описывающий функцию Get-Verb.

Третья команда получает объект [AliasInfo], описывающий псевдоним «gsv».

Четвертая команда отображает информацию о параметрах указанных командлетов и функций, которые поддерживают получение данных по конвейеру.

$command = Get-Command -Name Get-Process
$function = Get-Command -Name Get-Verb
$alias = Get-Command gsv

Get-sthPipelineParameter -Command $command, $function, $alias

Пример 5.

Первая команда получает объект [CmdletInfo], описывающий командлет Get-Process.

Вторая команда получает объект [FunctionInfo], описывающий функцию Get-Verb.

Третья команда получает объект [AliasInfo], описывающий псевдоним «gsv».

Четвертая команда отображает информацию о параметрах указанных командлетов и функций, которые поддерживают получение данных по конвейеру.

В этот раз мы передали данные функции Get-sthPipelineParameter при помощи конвейера.

$command = Get-Command -Name Get-Process
$function = Get-Command -Name Get-Verb
$alias = Get-Command gsv

$command, $function, $alias, 'Get-PSDrive', 'cat' | Get-sthPipelineParameter

Пример 6.

Команда отображает информацию о параметрах командлета Get-Process, которые поддерживают получение данных по конвейеру.

Также функция сообщает о несуществующей команде — «Non-ExistingCommand».

Get-sthPipelineParameter -Command Get-Process, Non-ExistingCommand
   Command: Get-Process

ParameterName Aliases     ParameterType                ParameterSet            Mandatory ByValue ByPropertyName
------------- -------     -------------                ------------            --------- ------- --------------
Name          ProcessName System.String[]              NameWithUserName        False     False   True
Name          ProcessName System.String[]              Name (IsDefault)        False     False   True
Id            PID         System.Int32[]               IdWithUserName          True      False   True
Id            PID         System.Int32[]               Id                      True      False   True
InputObject               System.Diagnostics.Process[] InputObjectWithUserName True      True    False
InputObject               System.Diagnostics.Process[] InputObject             True      True    False
ComputerName  Cn          System.String[]              Id                      False     False   True
ComputerName  Cn          System.String[]              Name (IsDefault)        False     False   True
ComputerName  Cn          System.String[]              InputObject             False     False   True

Commands not found:
Non-ExistingCommand

Пример 7.

Команда отображает информацию о параметрах командлета Get-Process, которые поддерживают получение данных по конвейеру.

Так как мы указали параметр -HideNotFoundCommands, функция не будет сообщать о несуществующей команде.

Get-sthPipelineParameter -Command Get-Process, Non-ExistingCommand -HideNotFoundCommands
   Command: Get-Process

ParameterName Aliases     ParameterType                ParameterSet            Mandatory ByValue ByPropertyName
------------- -------     -------------                ------------            --------- ------- --------------
Name          ProcessName System.String[]              NameWithUserName        False     False   True
Name          ProcessName System.String[]              Name (IsDefault)        False     False   True
Id            PID         System.Int32[]               IdWithUserName          True      False   True
Id            PID         System.Int32[]               Id                      True      False   True
InputObject               System.Diagnostics.Process[] InputObjectWithUserName True      True    False
InputObject               System.Diagnostics.Process[] InputObject             True      True    False
ComputerName  Cn          System.String[]              Id                      False     False   True
ComputerName  Cn          System.String[]              Name (IsDefault)        False     False   True
ComputerName  Cn          System.String[]              InputObject             False     False   True

Пример 8.

Функция Get-sthPipelineCommand проверяет, поддерживают ли командлеты Get-Process, Start-Process и Stop-Process получение данных по конвейеру.

Затем функция передает полученные данные функции Get-sthPipelineParameter, которая выводит информацию о поддерживающих конвейер параметрах.

Так как из трех указанных команд конвейер поддерживают только две — Get-Process и Stop-Process, функция Get-sthPipelineParameter не отображает информацию о параметрах командлета Start-Process.

Get-sthPipelineCommand -Command Get-Process, Start-Process, Stop-Process | Get-sthPipelineParameter
   Command: Get-Process

ParameterName Aliases     ParameterType                ParameterSet            Mandatory ByValue ByPropertyName
------------- -------     -------------                ------------            --------- ------- --------------
Name          ProcessName System.String[]              NameWithUserName        False     False   True
Name          ProcessName System.String[]              Name (IsDefault)        False     False   True
Id            PID         System.Int32[]               IdWithUserName          True      False   True
Id            PID         System.Int32[]               Id                      True      False   True
InputObject               System.Diagnostics.Process[] InputObjectWithUserName True      True    False
InputObject               System.Diagnostics.Process[] InputObject             True      True    False
ComputerName  Cn          System.String[]              Id                      False     False   True
ComputerName  Cn          System.String[]              Name (IsDefault)        False     False   True
ComputerName  Cn          System.String[]              InputObject             False     False   True


   Command: Stop-Process

ParameterName Aliases     ParameterType                ParameterSet   Mandatory ByValue ByPropertyName
------------- -------     -------------                ------------   --------- ------- --------------
Name          ProcessName System.String[]              Name           True      False   True
Id                        System.Int32[]               Id (IsDefault) True      False   True
InputObject               System.Diagnostics.Process[] InputObject    True      True    False

Все модули доступны по следующей ссылке:

https://sergeyvasin.net/modules/


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VK: https://vk.com/inpowershell


Реклама

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

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

Логотип WordPress.com

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

Google+ photo

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

Фотография Twitter

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

Фотография Facebook

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

w

Connecting to %s