У PowerShell foreachі %псевдоніми за замовчуванням до ForEach-Object. Однак, схоже, команда поводиться по-різному залежно від того, як її викликають.
Зокрема, мені важко отримати команду працювати, не подаючи вхід з конвеєра, якщо я спеціально не використовую foreachпсевдонім.

Чи є тут щось, що я роблю неправильно, або це чомусь із дизайну?
foreach,ForEach-Objectі%. Це навіть можна скоротити до1..3|%{$_}. :-)