配列の展開

基本形
○ 1..10 | %{$_}

ダブルコーテーション内の変数展開
○ 1..10 | %{"$_"}

ダブルコーテーション内に文字列があっても展開してくれる。
○1..10 | %{"$_ abc"}

しかし$_に文字列をくっつけると(さっきのは半角スペースあけている)
×1..10 | %{"$_abc"}
エラーは出ない。10回ループは行われるが何も表示されない。
考えてみれば当たり前で、$_abcという名前の変数と認識してしまう。どうしても間の半角スペースを無くしたい場合は
1..10 | %{($_.ToString() + "abc")}
ですね。


dir なども結果はオブジェクトの配列なので

○dir | %{$_}
ファイル名が列挙される。しかもパイプで渡されるのはオブジェクトなのでメソッド、プロパティを持っている。

○dir | %{$_.FullName}
ファイル名がフルパスで表示される。しかし、

× dir | %{"$_.FullName"}

ダブルコーテーションで囲むとプロパティの展開は行われない。ファイル名.FullName と表示されてしまう。
どうやらダブルコーテーション内の展開は$_までで、それをtoString()として展開しているみたい。
だからどうしても動かしたい場合は
dir | %{$x = $_.FullName; "$x";}
しかないか。