“%” (เปอร์เซ็นต์) ทำอะไรใน PowerShell


106

ดูเหมือนว่าการดำเนินการ% จะเริ่มบล็อกสคริปต์หลังจากไปป์ไลน์แม้ว่าabout_Script_Blocksจะระบุว่าไม่จำเป็นต้องใช้% ก็ตาม

ทั้งหมดนี้ใช้ได้ดี

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

{ write-host 'hello' }

% { write-host 'hello' }

แต่เมื่อเราเพิ่มบล็อกสคริปต์หลังไปป์ไลน์เราจำเป็นต้องมี% ก่อน

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

2
คุณลองค้นหา "powershell percent sign"
PeeHaa

17
คุณอาจได้ลองใช้ Get-Help%
mjolinor

8
@mjolinor นั่นมีประโยชน์ ฉันไม่รู้ว่าฉันสามารถขอความช่วยเหลือเกี่ยวกับสัญลักษณ์ได้ ฉันเห็นว่าเราสามารถค้นหา $ _ ได้ด้วยการขอความช่วยเหลือ เยี่ยมมาก!
Shaun Luttin

1
มันเป็นตัวดำเนินการโมดูลัสด้วย! ไม่ได้อยู่ในบริบทนี้
Cole9350

41
@PeeHaa ข้อเสนอแนะของคุณนำไปสู่ที่นี่
NiloCK

คำตอบ:


144

เมื่อใช้ในบริบทของ cmdlet (เช่นตัวอย่างของคุณ) จะเป็นนามแฝงสำหรับForEach-Object:

> Get-Alias -Definition ForEach-Object

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

เมื่อใช้ในบริบทของสมการมันเป็นตัวดำเนินการโมดูลัส :

> 11 % 5

1

และในฐานะตัวดำเนินการโมดูลัส%ยังสามารถใช้ในตัวดำเนินการกำหนด ( %=):

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

1

2
ฉันจะทำเครื่องหมายว่านี่เป็นคำตอบเมื่อมันมีบทบาท% เป็นตัวดำเนินการโมดูลัสในบริบทต่างๆ
Shaun Luttin

1
เพิ่มสมการและตัวอย่างตัวดำเนินการกำหนด
Kohlbrr

17
ในกรณีของ Foreach-Object ฉันไม่แนะนำให้ใช้สัญลักษณ์ "%" ซึ่งจะทำให้คนอ่าน / รักษาโค้ดของคุณยากขึ้นโดยเฉพาะคนที่เพิ่งเริ่มใช้ PS มาเผชิญหน้ากันเถอะยิ่งมีคนรับ PS มากเท่าไหร่ก็ยิ่งดีเท่านั้น
Simon Catlin

1
ฉันจะค้นหาความหมาย ForEach-Object ในเอกสารอย่างเป็นทางการเกี่ยวกับ MSDN ได้ที่ไหน
พับขวา

ฉันไม่เห็นด้วย Simon Catlin โดยตรรกะนั้นเราทุกคนควรใช้แอสเซมบลีเพราะส่วนที่เหลือเป็นเพียงแค่น้ำตาลวากยสัมพันธ์
reggaeguitar

16

โพสต์PowerShell - อักขระพิเศษและโทเค็นให้คำอธิบายของสัญลักษณ์ต่างๆรวมถึง%

% (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: ค่านี้เป็นลิงค์ที่อธิบายอักขระพิเศษหลายตัวรวมถึง%
Michael Freidgeim

ForEach-Objectในทางเทคนิคมันเป็นนามแฝงสำหรับ ForEachนอกจากนี้ยังเป็นนามแฝงสำหรับForEach-Object- ยกเว้นเมื่อใช้ที่จุดเริ่มต้นของคำสั่งโดยที่เป็นคีย์เวิร์ดควบคุมการวนซ้ำ (เช่นwhile)
mwfearnley

4

%สามารถแทนที่ซึ่งจะไม่ทำงานหากไม่มีหรือ.Get-ChildItem | ForEach-Object { write-host $_.Name }%ForEach-Object

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.