Поделиться через


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 .*

См. также раздел