Il semble que l'opération% commence les blocs de script après le pipeline, bien que about_Script_Blocks indique que% n'est pas nécessaire.
Tout cela fonctionne très bien.
get-childitem | %{ write-Host $_.Name }
{ write-Host 'hello' }
%{ write-Host 'hello' }
Mais lorsque nous ajoutons un bloc de script après le pipeline, nous devons d'abord avoir le%.
get-childitem | { write-Host $_.Name }
Lorsqu'il est utilisé dans le contexte d'une applet de commande (tel que votre exemple), il s'agit d'un alias pour ForEach-Object
:
> Get-Alias -Definition ForEach-Object
CommandType Name Definition
----------- ---- ----------
Alias % ForEach-Object
Alias foreach ForEach-Object
Lorsqu'il est utilisé dans le contexte d'une équation, il s'agit de opérateur de module :
> 11 % 5
1
et en tant qu'opérateur de module, %
peut également être utilisé dans un opérateur d’affectation (%=
):
> $this = 11
> $this %= 5
> $this
1
Un article PowerShell - Caractères spéciaux et jetons
décrit plusieurs symboles, y compris%
% (percentage)
1. Shortcut to foreach.
Task: Print all items in a collection.
Solution.
... | % { Write-Host $_ }
2. Remainder of division, same as Mod in VB.
Example:
5 % 2
% peut remplacer Get-ChildItem |
ForEach-Object
{ write-Host $_.Name }
et ça ne peut pas aller sans %
ou ForEach-Object