プロが教えるわが家の防犯対策術!

powershell でパラメータ的な変数 $_ の下の項目を扱うには?


$aaa = Get-ChildItem -Path "c:¥Program Files"
この場合の $aaa を1レコードづつ回して、特定項目を抜き出す方法を教えてください。

$aaaを見てみると、

Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2010/06/30 12:00 Adobe
d---- 2010/06/30 12:00 Hidemaru
d---- 2010/06/30 12:00 Java
d---- 2010/06/30 12:00 Lhaplus
d---- 2010/06/30 12:00 Microsoft Office

な感じです。

ここから、1レコード毎に個別に、またModeやNameの1項目毎に取り扱いたいです。

例えば
あああ
d---- Adobe
あああ
d---- Hidemaru
あああ
d---- Java
あああ
d---- Lhaplus
あああ
d---- Microsoft Office

と出力したいとして、
ForEach-Object -InputObject $aaa -Process { echo "あああ"; echo ($_.Mode + " " + $_.Name) }
というコマンドを打ってみましたが、うまく行きません。


一旦、シンプルに
ForEach-Object -InputObject $aaa -Process { echo $_ }
とすると、

Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2010/06/30 12:00 Adobe
d---- 2010/06/30 12:00 Hidemaru
d---- 2010/06/30 12:00 Java
d---- 2010/06/30 12:00 Lhaplus
d---- 2010/06/30 12:00 Microsoft Office

と出力されました。
しかし、これは1件づつループしたのではなく、$aaaの塊が1回ドンと出てループはしていません。

ForEach-Object -InputObject $aaa -Process { echo "あああ"; echo $_ }
と書いても、結果は

あああ
d---- 2010/06/30 12:00 Adobe
あああ
d---- 2010/06/30 12:00 Hidemaru
あああ
d---- 2010/06/30 12:00 Java
あああ
d---- 2010/06/30 12:00 Lhaplus
あああ
d---- 2010/06/30 12:00 Microsoft Office


ではなく
あああ
d---- 2010/06/30 12:00 Adobe
d---- 2010/06/30 12:00 Hidemaru
d---- 2010/06/30 12:00 Java
d---- 2010/06/30 12:00 Lhaplus
d---- 2010/06/30 12:00 Microsoft Office

です。

この場合の $aaa を1レコードづつ回して、特定項目を抜き出す方法を教えてください。

A 回答 (2件)

$aaa | ForEach-Object 以下略


Get-Help ForEach-Object -examples でも見てください.
    • good
    • 1

たぶん, -InputObject で指定するんじゃなくてパイプで送り込むんだと思う.

この回答への補足

get-childItemから直接パイプで放り込むのは確かに出来ます。
実はそれは知っていました。

そうでなく、
オブジェクトとして一旦変数に避けた後、その変数の中身を取り出してどうのこうのする事はできるのかが知りたいです。

補足日時:2010/06/30 14:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!