Что делает ключевое слово фильтра в PowerShell? - PullRequest
2 голосов
/ 04 июня 2019

Я наткнулся на некоторый код Powershell с помощью команды filter. Я никогда не видел эту команду, но она работает в основном так:

enter image description here

Кажется, он ведет себя как функция. Если я запускаю Get-Command filter, я возвращаюсь The term 'filter' is not recognized as the name of a cmdlet, function, script file, or operable program. и Get-Alias filter также возвращает аналогичное сообщение. Get-Help filter просто возвращает командлеты и функции где-то со словом «фильтр». Если я найду Google для «команды фильтра Powershell», я просто получу кучу информации о различных командах с -Filter аргументами и Where-Object синтаксисом.

Что это за команда и для чего она используется? Где-то есть документация? Спасибо!

Ответы [ 2 ]

4 голосов
/ 04 июня 2019

Короче говоря, фильтр - это своего рода расширенная функция, которая может использовать только блок процесса.Исходя из этого, может использоваться для манипулирования (фильтрации, изменения ...) объектов конвейера.Они также позволяют вам, например, предоставлять предопределенную функцию фильтра с модулем, что избавляет вас от необходимости писать сложные Where-Objects блоки сценариев 100 раз.Это также дает вам возможность завершить конвейерную обработку, если объект конвейера соответствует определенным критериям, вам нужно только использовать ключевое слово break внутри фильтра.

о функциях

Фильтры

Фильтр - это тип функции, которая выполняется для каждого объекта в конвейере.Фильтр напоминает функцию со всеми ее операторами в блоке Process.Следующий фильтр принимает записи журнала из конвейера и затем отображает либо всю запись, либо только часть сообщения записи:

 filter Get-ErrorLog ([switch]$message)
 {
   if ($message) { Out-Host -InputObject $_.Message }
   else { $_ }
 }

Эта ссылка предлагает хорошее объяснение о включенииНекоторые примеры.

Надеюсь, это поможет.

1 голос
/ 04 июня 2019

Полагаю, по названию он предназначен для использования в конвейере.Я не вижу, чтобы это использовалось много.

PS C:\users\js> Filter plusone { $_ + 1 }
PS C:\users\js> Echo 1 | plusone
2

PS C:\users\js> Filter comma { '{0:n0}' -f $_ }
PS C:\users\js> 1234567890 | comma
1,234,567,890
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...