Parece que la operación% inicia bloques de script después de la canalización, aunque about_Script_Blocks indica que% no es necesario.
Todo esto funciona bien.
get-childitem | % { write-host $_.Name }
{ write-host 'hello' }
% { write-host 'hello' }
Pero cuando agregamos un bloque de secuencia de comandos después de la canalización, primero debemos tener%.
get-childitem | { write-host $_.Name }
powershell
syntax
Shaun Luttin
fuente
fuente
Respuestas:
Cuando se usa en el contexto de un cmdlet (como su ejemplo), es un alias para
ForEach-Object
:Cuando se usa en el contexto de una ecuación, es el operador de módulo :
y como operador de módulo,
%
también se puede usar en un operador de asignación (%=
):fuente
Una publicación de PowerShell: caracteres especiales y tokens proporciona una descripción de varios símbolos, incluidos
%
fuente
ForEach-Object
.ForEach
también es un alias paraForEach-Object
, excepto cuando se usa al comienzo de una declaración, donde es una palabra clave de control de bucle (comowhile
).%
puede reemplazar lo que no funcionará sin el o el .Get-ChildItem |
ForEach-Object
{ write-host $_.Name }
%
ForEach-Object
fuente