2014-04-03 19 views
64

Sembra che l'operazione% avvii blocchi di script dopo la pipeline, sebbene about_Script_Blocks indichi che% non è necessario.Che cosa fa "%" (percentuale) in PowerShell?

Questi funzionano tutti bene.

get-childitem | %{ write-host $_.Name } 

{ write-host 'hello' } 

%{ write-host 'hello' } 

Ma quando aggiungiamo un blocco di script dopo la pipeline, dobbiamo prima avere%.

get-childitem | { write-host $_.Name } 
+2

Hai provato cercando "powershell per segno di centesimo " – PeeHaa

+0

@PeeHaa che l'ha fatto. Grazie! –

+10

Potresti aver provato anche Get-Help% – mjolinor

risposta

94

Quando viene utilizzato nel contesto di un cmdlet (come il tuo esempio), è un alias per ForEach-Object:

> Get-Alias -Definition ForEach-Object 

CommandType  Name            Definition 
-----------  ----            ---------- 
Alias   %             ForEach-Object 
Alias   foreach            ForEach-Object 

Quando usato nel contesto di un'equazione, è la modulus operator:

> 11 % 5 

1 

e l'operatore modulo, % può essere utilizzato anche in una assignment operator (%=):

+1

contrassegnerò questo come risposta una volta che contiene anche il% role come operatore modulo in diversi contesti . –

+1

Aggiunti esempi di operatore di equazioni e assegnazione – Kohlbrr

+4

Nel caso di Foreach-Object, consiglierei di non utilizzare il simbolo "%" - rende più difficile per la gente leggere/gestire il codice, in particolare le persone nuove a PS. Ammettiamolo, più persone raccolgono PS, meglio è. –

0

% può sostituire Get-ChildItem |ForEach-Object{ write-host $_.Name } e non si può andare senza % o ForEach-Object

+0

Questa risposta non aggiunge valore alla risposta esistente. –

3

Un post PowerShell - Special Characters And Tokens
fornisce descrizione di molteplici simboli tra%

% (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 
+0

Questa risposta non aggiunge valore alle due risposte esistenti. –

+1

@ShaunLuttin: il valore è un collegamento che descrive più caratteri speciali, inclusa% –