Es scheint, dass die Operation% Skriptblöcke nach der Pipeline startet, obwohl about_Script_Blocks angibt, dass% nicht erforderlich ist.
Diese funktionieren alle einwandfrei.
get-childitem | % { write-host $_.Name }
{ write-host 'hello' }
% { write-host 'hello' }
Wenn wir jedoch nach der Pipeline einen Skriptblock hinzufügen, müssen wir zuerst% haben.
get-childitem | { write-host $_.Name }
powershell
syntax
Shaun Luttin
quelle
quelle
Antworten:
Bei Verwendung im Kontext eines Cmdlets (wie in Ihrem Beispiel) ist es ein Alias für
ForEach-Object
:Wenn es im Kontext einer Gleichung verwendet wird, ist es der Moduloperator :
und kann als Moduloperator
%
auch in einem Zuweisungsoperator (%=
) verwendet werden:quelle
Ein Beitrag PowerShell - Sonderzeichen und Token enthält eine Beschreibung mehrerer Symbole, einschließlich
%
quelle
ForEach-Object
.ForEach
ist auch ein Alias fürForEach-Object
- außer wenn es am Anfang einer Anweisung verwendet wird, bei der es sich um ein Schleifensteuerungsschlüsselwort handelt (wiewhile
).%
kann ersetzen, was ohne die oder die nicht funktioniert .Get-ChildItem |
ForEach-Object
{ write-host $_.Name }
%
ForEach-Object
quelle