hack のためのネタ帳, etc,,,

ForEach-Object と Where-Object

しばしば、 "... | % { ... }" とか "... | ? { ... }" みたいなパイプを見かけるが、これは
以下のように % と ? に ForEach-Object と Where-Object が alias されてる。
> alias

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
...
従って
... | ForEach-Object { ... }

... | % { ... }
と同義
... | Where-Object { ... }

... | ? { ... }
と同義となる。

PowerShell "|%"」や「PowerShell "|?"」 でググっても、一次情報はおろか、二次以降の情報すら見つからずしばらく頭を抱えたのだが、何のことはない、「powershell alias foreach-object where-object」でググるといろいろ見つかるのであった。

alias

これは地味に謎。
動作は明らかに Get-Alias なのだが
> Get-Command alias
Get-Command : 用語 'alias' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識さ
れません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行し
てください。
発生場所 行:1 文字:1
+ Get-Command alias
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (alias:String) [Get-Command], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand||=
みたい、Cmdlet にも Alias にも該当する項目が見当たらない。

因みに、Cmdlet や Alias だと以下のような結果になる。
> Get-Command Get-ChildItem

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Get-ChildItem                                      3.1.0.0    Microsoft.PowerShell.Management


> Get-Command ls

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           ls -> Get-ChildItem


help を引いてみると
> help alias
ってすると Alias ってプロバイダーの説明が出て来て、
明らかに
> help alias -category provider
の内容を引いてるんだけど about_Alias_Provider とも微妙に内容が違っているし、なぜか -online も効かない。

因みに以下のようにすると TypeName: System.Management.Automation.ProviderInfo で以下の情報を取得できるようだ。
> Get-PSProvider Alias

Name                 Capabilities                                      Drives
----                 ------------                                      ------
Alias                ShouldProcess                                     {Alias}


コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

編集にはIDが必要です