PowerShell'de "%" (yüzde) ne yapar?


106

Yaklaşık_Script_Blocks ,% 'nin gerekli olmadığını belirtmesine rağmen,% işlemi ardışık düzenten sonra komut dosyası bloklarını başlatıyor gibi görünüyor .

Bunların hepsi gayet iyi çalışıyor.

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

{ write-host 'hello' }

% { write-host 'hello' }

Ancak ardışık düzenten sonra bir betik bloğu eklediğimizde, önce% 'ye sahip olmamız gerekir.

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

2

17
Ayrıca Get-Help%
mjolinor'u

7
@mjolinor Bu kullanışlı. Semboller konusunda yardım alabileceğimi bilmiyordum. Ayrıca get-help ile de $ _ arayabileceğimizi görüyorum. Bu harika!
Shaun Luttin

1
Aynı zamanda bir modül operatörüdür! sadece bu bağlamda değil
Cole9350

41
@PeeHaa Öneriniz buraya götürür.
NiloCK

Yanıtlar:


144

Bir cmdlet bağlamında kullanıldığında (örneğiniz gibi), bu, aşağıdakiler için bir takma addır ForEach-Object:

> Get-Alias -Definition ForEach-Object

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

Bir denklem bağlamında kullanıldığında, modül operatörüdür :

> 11 % 5

1

ve modül operatörü olarak, %bir atama operatöründe de kullanılabilir ( %=):

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

1

2
Farklı bağlamlarda modül operatörü olarak% rolünü de içerdiğinde bunu cevap olarak işaretleyeceğim.
Shaun Luttin

1
Denklem ve atama operatörü örnekleri eklendi
Kohlbrr

17
Foreach-Object durumunda, "%" sembolünü kullanmamanızı tavsiye ederim - bu, insanların kodunuzu okumasını / sürdürmesini zorlaştırır - özellikle de PS'ye yeni olan kişiler. Kabul edelim, PS'yi ne kadar çok insan alırsa o kadar iyi.
Simon Catlin

1
MSDN'deki resmi belgelerde ForEach-Object anlamını nerede bulabilirim?
2019

Simon Catlin'e katılmıyorum, bu mantıkla hepimiz montaj kullanmalıyız çünkü gerisi sadece sözdizimsel şeker
reggaeguitar

16

Bir yayın PowerShell - Özel Karakterler ve Simgeler dahil olmak üzere birden çok simgenin açıklamasını sağlar%

% (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: Değer,% de dahil olmak üzere birden fazla özel karakteri tanımlayan bir bağlantıdır
Michael Freidgeim

Teknik olarak bunun bir takma adıdır ForEach-Object. ForEachaynı zamanda için bir takma addır ForEach-Object- bir ifadenin başlangıcında kullanılması dışında, burada bir döngü kontrol anahtar sözcüğü (gibi while).
mwfearnley

4

%veya olmadan çalışmayacak olanı değiştirebilirsiniz .Get-ChildItem | ForEach-Object { write-host $_.Name }%ForEach-Object

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.