2011年8月2日火曜日

◆オブジェクトのキー重複を取り除く

以下のような感じで重複自体は簡単に取り除けるのだが、

PS>ps | select name | Get-Unique -AsString

これだと、プロセスオブジェクトの情報が「name」だけになってしまう。
プロセスオブジェクトの情報を保ったまま名前の重複を削除するには?

こんな感じかなぁ。

PS>ps | Group name | %{ $_.Group | select -First 1}


牟田口さんからコメントを頂きました。

ps | sort name -unique

まさにやりたかったのはこれです。ありがとうございます。すっきりしました。

何かのコマンドレットにUNIQUEパラメータがあるのは覚えていたのですがSelectだったかなぁとスルーしていました。
特定のパラメータを持ったコマンドを調べるのって何だっけ?とこれも忘れていました。
ここに書いていましたね。
image

ついでにGet-Uniqueももう少し調べてみて、今回のサンプルの例に限って言えば、ps | Get-Uniqueでも同じ結果になることが分かりました。
これは、たまたま名前順にプロセスが返ってきているのと、これもたまたまプロセスがこんな感じで
image
名前付きで返してくれるからかと思います。

1 件のコメント:

  1. そのような目的であれば、
    ps|sort -unique -property name
    でいいかと思います。

    返信削除