Привязка параметров конвейера
Команда Windows PowerShell может использовать только один из параметров при каждом запуске, чтобы указать объект, на котором она работает. При отправке данных из одной команды в другую не нужно указывать этот параметр. Это делает полную инструкцию команды более удобочитаемой. Однако может быть не очевидно, как эта команда работает при выполнении. Рассмотрим следующую команду:
Get-ADUser -Filter {Name -eq 'Perry Brill'} | Set-ADUser -City Seattle
В этом примере Set-ADUser принимает входные данные косвенным образом; то есть ей требуется объект пользователя в качестве входных данных. При запуске Set-ADUser напрямую можно передать имя пользователя для идентификации пользователя, но данная команда этого не делает. Вместо этого объект, который создает Get-ADUser, извлекается из конвейера командлетом Set-ADUser. В Set-ADUser передается два параметра, а не один параметр, который вы видите. Windows PowerShell невидимо использует другой параметр в процессе, который называется привязкой параметров конвейера.
При подключении двух команд в конвейере привязка параметра конвейера принимает выходные данные первой команды и самостоятельно определяет, что с ним делать. Процесс выберет один из параметров второй команды для получения этих выходных данных. Windows PowerShell предлагает два метода, используемые для принятия этого решения. Первый метод — тот, который Windows PowerShell всегда пытается использовать первым — называется ByValue. Второй метод, ByPropertyName, используется только в случае сбоя ByValue.