PowerShellで「%」(パーセント)は何をしますか?


106

%操作はパイプラインの後にスクリプトブロックを開始するようですが、about_Script_Blocksは%が不要であることを示しています。

これらはすべて正常に動作します。

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

{ write-host 'hello' }

% { write-host 'hello' }

ただし、パイプラインの後にスクリプトブロックを追加するときは、最初に%を付ける必要があります。

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

2
「Powershellパーセント記号」を検索してみましたか
PeeHaa

17
Get-Help%
mjolinor

7
@mjolinor便利ですね。記号の助けが得られることを知りませんでした。get-helpで$ _を検索することもできます。それは素晴らしいことです!
Shaun Luttin 14

1
それはまた、モジュラス演算子です!このコンテキストにはありません
Cole9350 14

41
@PeeHaaあなたの提案はここにつながります。
NiloCK 2015年

回答:


144

コマンドレット(例など)のコンテキストで使用すると、次のエイリアスになり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 2014

1
方程式と代入演算子の例を追加
Kohlbrr

17
Foreach-Objectの場合は、「%」記号を使用しないことをお勧めします。これは、人々、特にPSの初心者がコードを読んだり保守したりすることを難しくします。それに直面しよう、PSを拾う人が多いほど良い。
Simon Catlin 14

1
MSDNの公式ドキュメントでForEach-Objectの意味はどこにありますか?
右折

残りはちょうど糖衣構文であるので、私たちは、すべてのアセンブリ使用すべきことは、ロジックにより、サイモン・カトリンに反対する
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 2018

4

%置き換えることができますどちらかなしでは動作しませんていますか。Get-ChildItem | ForEach-Object { write-host $_.Name }%ForEach-Object

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.