Che cosa fa "%" (percentuale) in PowerShell?


106

Sembra che l'operazione% avvii blocchi di script dopo la pipeline, sebbene about_Script_Blocks indichi che% non è necessario.

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 a cercare "segno di percentuale powershell"
PeeHaa

17
Potresti anche aver provato Get-Help%
mjolinor

7
@mjolinor È utile. Non sapevo di poter ottenere aiuto sui simboli. Vedo che possiamo anche cercare $ _ con get-help. È fantastico!
Shaun Luttin

1
È anche un operatore di modulo! solo non in questo contesto
Cole9350

41
@PeeHaa Il tuo suggerimento porta qui.
NiloCK

Risposte:


144

Se 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 viene utilizzato nel contesto di un'equazione, è l' operatore modulo :

> 11 % 5

1

e come operatore modulo, %può essere utilizzato anche in un operatore di assegnazione ( %=):

> $this = 11
> $this %= 5
> $this

1

2
Lo contrassegnerò come risposta una volta che contiene anche il ruolo% come operatore di modulo in diversi contesti.
Shaun Luttin

1
Aggiunti esempi di operatori di equazione e assegnazione
Kohlbrr

17
Nel caso di Foreach-Object, consiglierei di non usare il simbolo "%" - rende più difficile per le persone leggere / mantenere il tuo codice - specialmente le persone che non conoscono PS. Ammettiamolo, più persone prendono PS, meglio è.
Simon Catlin

1
Dove posso trovare il significato di ForEach-Object nella documentazione ufficiale su MSDN?
rightfold

Non sono d'accordo Simon Catlin, secondo questa logica dovremmo tutti usare l'assemblaggio perché il resto è solo zucchero sintattico
reggaeguitar

16

Un post PowerShell - Caratteri speciali e token fornisce la descrizione di più simboli tra cui%

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

7
@ShaunLuttin: il valore è un collegamento, che descrive più caratteri speciali tra cui%
Michael Freidgeim

Tecnicamente è un alias per ForEach-Object. ForEachè anche un alias per ForEach-Object- tranne quando viene utilizzato all'inizio di un'istruzione, dove è una parola chiave di controllo del ciclo (come while).
mwfearnley

4

%può sostituire che non funzionerà senza il o il .Get-ChildItem | ForEach-Object { write-host $_.Name }%ForEach-Object

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.