С выпуском Windows PowerShell 4.0 появились два новых «волшебных» метода
были введены для типов коллекций, которые предоставляют новый синтаксис для
доступ к возможностям ForEach
и Where
в Windows PowerShell.
Эти методы точно названы ForEach
и Where
. Я звоню
эти методы «магические», потому что они довольно волшебны в том, как они работают
в PowerShell. Они не отображаются в выводе Get-Member
, даже если вы
применить -Force
и запрос -MemberType All
. Если вы закатываете
рукава и копайся с отражением, ты можешь их найти; однако это
требует широкого поиска, потому что они являются частными методами расширения
реализовано в закрытом классе . Тем не менее, даже если они не
обнаруживается, не заглядывая под одеяло, они есть, когда вы
они нужны, они быстрее, чем их старшие коллеги, и они
включать функции, которые не были доступны в их старых
коллег, отсюда и «волшебное» чувство, которое они покидают, когда вы
используйте их в PowerShell. К сожалению, эти методы остаются
без документов даже сегодня, почти год, так как они были публично
так много людей не осознают силу, которая доступна в
эти методы.
...
Метод Where
Where
- это метод, который позволяет фильтровать коллекцию объектов.
Это очень похоже на командлет Where-Object
, но Where
метод также как Select-Object
и Group-Object
,
включает несколько дополнительных функций, которые Where-Object
командлет
изначально не поддерживает сам по себе. Этот метод обеспечивает быстрее
производительность, чем Where-Object
в простой, элегантной команде. подобно
метод ForEach
, любые объекты, которые выводятся этим методом
возвращается в общую коллекцию типа
System.Collections.ObjectModel.Collection1[psobject]
.
Существует только одна версия этого метода, которую можно описать как
следующим образом:
Where(scriptblock expression[, WhereOperatorSelectionMode mode[, int numberToReturn]])
Как указано в квадратных скобках, блок сценария expression
требуется и перечисление mode
и целое число numberToReturn
аргумент не является обязательным, поэтому вы можете вызвать этот метод, используя 1, 2 или 3
аргументы. Если вы хотите использовать определенный аргумент, вы должны предоставить
все аргументы слева от этого аргумента (т.е. если вы хотите
укажите значение numberToReturn
, вы должны указать
mode
и expression
)