Apa yang dilakukan "%" (persen) di PowerShell?


106

Tampaknya% operasi memulai blok skrip setelah pipa, meskipun about_Script_Blocks menunjukkan% tidak diperlukan.

Ini semua bekerja dengan baik.

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

{ write-host 'hello' }

% { write-host 'hello' }

Tetapi ketika kita menambahkan blok skrip setelah pipeline, kita harus memiliki% terlebih dahulu.

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

2
Sudahkah Anda mencoba mencari "tanda persen PowerShell"
— PeeHaa

17
Anda mungkin juga telah mencoba Get-Help%
— mjolinor

7
@mjolinor Itu berguna. Saya tidak tahu saya bisa mendapatkan bantuan tentang simbol. Saya melihat bahwa kita juga dapat mencari $ _ dengan get-help. Itu hebat!
— Shaun Luttin

1
Ini juga merupakan operator modulus! tidak hanya dalam konteks ini
— Cole9350

41
@PeeHaa Saran Anda mengarah ke sini.
— NiloCK

Jawaban:


144

Saat digunakan dalam konteks cmdlet (seperti contoh Anda), ini adalah alias untuk ForEach-Object:

> Get-Alias -Definition ForEach-Object

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

Saat digunakan dalam konteks persamaan, itu adalah operator modulus :

> 11 % 5

1

dan sebagai operator modulus, %juga dapat digunakan dalam sebuah operator penugasan ( %=):

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

1

2
Saya akan menandai ini sebagai jawaban setelah itu juga berisi peran% sebagai operator modulus dalam konteks yang berbeda.
— Shaun Luttin

1
Menambahkan persamaan dan contoh operator penugasan
— Kohlbrr

17
Dalam kasus Foreach-Object, saya sarankan untuk tidak menggunakan simbol "%" - ini akan mempersulit orang-orang untuk membaca / memelihara kode Anda - terutama orang-orang yang baru mengenal PS. Mari kita hadapi itu, semakin banyak orang yang menggunakan PS, semakin baik.
— Simon Catlin

1
Di mana saya bisa menemukan arti ForEach-Object dalam dokumentasi resmi di MSDN?
— lipatan kanan

Saya tidak setuju Simon Catlin, dengan logika itu kita semua harus menggunakan perakitan karena sisanya hanya gula sintaksis
— reggaeguitar

16

Sebuah posting PowerShell - Karakter Khusus Dan Token memberikan deskripsi beberapa simbol termasuk%

% (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: Nilainya adalah tautan, yang menjelaskan beberapa karakter khusus termasuk%
— Michael Freidgeim

Secara teknis ini adalah alias untuk ForEach-Object. ForEachjuga merupakan alias untuk ForEach-Object- kecuali jika digunakan di awal pernyataan, yang merupakan kata kunci kontrol loop (seperti while).
— mwfearnley

4

%dapat menggantikan yang tidak akan berfungsi tanpa atau .Get-ChildItem | ForEach-Object { write-host $_.Name }%ForEach-Object

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.