このエントリーをはてなブックマークに追加


PowerShellでユニークキーワードを取得する方法・Get-Unique・Sort-Object

配列やGet-Processなどの表形式で返却される情報について、ユニークキーワードを取得する例を以下に記します。


Sort-ObjectとGet-Uniqueを使ってユニークキーワードを取得する

配列とGet-Process等のコマンドレットから返却される情報からユニークキーワードを取得します。

配列

  1. 以下のように配列に文字列を設定しました。
    いくつか重複するキーワードがあります。
    PS C:\> $os = @("windows", "linux", "bsd", "macos", "windows", "linux", "android", "ios", "android")
    PS C:\> $os
    windows
    linux
    bsd
    macos
    windows
    linux
    android
    ios
    android
  2. ソートしてユニークを実行し、ユニークなキーワードを抽出します。
    1. ソートした結果です。
      PS C:\> $os | Sort-Object
      android
      android
      bsd
      ios
      linux
      linux
      macos
      windows
      windows
    2. ソートしてユニークなキーワードを抽出します。
      期待した動作になりました。
      PS C:\> $os | Sort-Object | Get-Unique
      android
      bsd
      ios
      linux
      macos
      windows
  • 失敗例
    ソートしないとユニークなキーワードは抽出できません。
    PS C:\> $os | Get-Unique
    windows
    linux
    bsd
    macos
    windows
    linux
    android
    ios
    android

Get-Processなどの表形式で返却される情報からユニークなキーワードを抽出

Get-Processを実行すると以下のような表形式で結果が返却されます。

PS C:\> Get-Process | Select-Object -First 10

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    618      34    30684      34264      11.17  11616   1 ApplicationFrameHost
    145       9     1688       8280       0.09   8276   1 browser_broker
    479      26    17292       3656       1.05  12232   1 Calculator
    355      18     6564      20588      13.50   5624   1 conhost
    565      21     1864       3184               476   0 csrss
    672      19     2580       4432               568   1 csrss
    499      19     9380      14840       9.02   2928   1 ctfmon
    308      16     3472       8316              4196   0 dasHost
    147      10     2572       4336              3760   0 DbxSvc
    131       8     1964       6040       1.39   7732   1 dllhost
    <省略>

以下、プロセス名(ProcessName)からユニークなキーワードを抽出方法をいくつか紹介します。

ProcessNameのみを対象としユニークなキーワードを抽出

Select-ObjectとGet-Uniqueを使ってユニークなキーワードを抽出

PS C:\> Get-Process | Select-Object ProcessName | Get-Unique -AsString

ProcessName
-----------
ApplicationFrameHost
browser_broker
Calculator
conhost
csrss
ctfmon
dasHost
DbxSvc
<省略>

Select-Objectのみでユニークなキーワードを抽出

PS C:\> Get-Process | Select-Object ProcessName -Unique

ProcessName
-----------
ApplicationFrameHost
browser_broker
Calculator
conhost
csrss
ctfmon
dasHost
DbxSvc
dllhost
Dropbox
<省略>

表形式を崩さずに、ProcessNameをユニークキーワードにする

表形式を崩さずにProcessNameのユニークキーワードを取得する例です。~
但し、ProcessNameでユニークにすることで、他の値(他の列の値)の情報が削除(行削除)されますので実用的であるかはわかりせんが…

Sort-ObjectのみでProcessNameのユニークなキーワードを抽出する

PS C:\> Get-Process | Sort-Object ProcessName -Unique

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    614      34    27284      32248      14.61  11616   1 ApplicationFrameHost
    143       9     1660       8024       0.09   8276   1 browser_broker
    479      26    17292        640       1.05  12232   1 Calculator
    349      18     6564      21024      18.42   5624   1 conhost
    674      19     2580       4420               568   1 csrss
    499      19     9668      14416       9.61   2928   1 ctfmon
    308      16     3472       8316              4196   0 dasHost
    147      10     2572       4412              3760   0 DbxSvc
    227      20     4408      11496       0.52   9232   1 dllhost
    308      14     2472       2868       0.28   2180   1 Dropbox
    <省略>

以上、Get-UniqueとSort-Objectコマンドを使ったユニークなキーワードを抽出方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-02-19 (火) 23:32:27