about_Simplified_Syntax
Краткое описание
Описывает более простые и более естественные способы создания фильтров сценариев для коллекций объектов .
Подробное описание
Упрощенный синтаксис, представленный в Windows PowerShell 3.0, позволяет создавать команды фильтра без использования блоков скриптов. Упрощенный синтаксис больше похож на естественный язык и в первую очередь полезен для коллекций объектов, которые передаются в команды Where-Object
, и ForEach-Object
с соответствующими псевдонимами where
и foreach
.
Метод можно использовать для элементов коллекции (чаще всего массива), не ссылаясь на автоматическую переменную $_
внутри блока скрипта.
Рассмотрим следующие два вызова:
Стандартный синтаксис
dir Cert:\LocalMachine\Root | where { $_.FriendlyName -eq 'Verisign' }
dir Cert:\ -Recurse | foreach { $_.GetKeyAlgorithm() }
Упрощенный синтаксис
В упрощенном синтаксисе операторы сравнения, работающие с элементами объектов в коллекции, обрабатываются как параметры. Метод можно вызвать для объектов в коллекции, не ссылаясь на автоматическую переменную $_
внутри блока скрипта.
Сравните следующие два вызова с вызовами из предыдущего примера:
dir Cert:\LocalMachine\Root | where FriendlyName -eq 'Verisign'
dir Cert:\ -Recurse | foreach GetKeyAlgorithm
Хотя оба синтаксиса работают, упрощенный синтаксис возвращает результаты без ссылки на автоматическую переменную $_
внутри блока скрипта.
Имя GetKeyAlgorithm
метода обрабатывается как параметр .ForEach-Object
Вторая команда возвращает те же результаты, но без ошибок, так как упрощенный синтаксис не пытается вернуть результаты для элементов, к которым не применен указанный аргумент.
В этом примере Process
свойство Description
передается команде ForEach-Object
в качестве параметра имени члена. Результаты представляют собой описания активных процессов.
Get-Process | foreach Description
В этом примере DirectoryInfo
метод GetFiles
передается в качестве параметра ForEach-Object
имени члена команды.
Метод вызывается с параметром .*
шаблона поиска .
Результаты представляют собой FileInfo
записи для всех скрытых файлов в стиле Unix в домашних каталогах пользователей.
Get-ChildItem /home -Directory | foreach GetFiles .*