#author("2019-02-19T23:32:27+09:00","","")
#navi(../)
* PowerShellでユニークキーワードを取得する方法・Get-Unique・Sort-Object [#cd065e7e]
配列やGet-Processなどの表形式で返却される情報について、ユニークキーワードを取得する例を以下に記します。


#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* Sort-ObjectとGet-Uniqueを使ってユニークキーワードを取得する [#i7245117]
配列とGet-Process等のコマンドレットから返却される情報からユニークキーワードを取得します。

** 配列 [#g7f18c3f]
+ 以下のように配列に文字列を設定しました。~
いくつか重複するキーワードがあります。
 PS C:\> $os = @("windows", "linux", "bsd", "macos", "windows", "linux", "android", "ios", "android")
 PS C:\> $os
 windows
 linux
 bsd
 macos
 windows
 linux
 android
 ios
 android
+ ソートしてユニークを実行し、ユニークなキーワードを抽出します。
++ ソートした結果です。
 PS C:\> $os | Sort-Object
 android
 android
 bsd
 ios
 linux
 linux
 macos
 windows
 windows
++ ソートしてユニークなキーワードを抽出します。~
期待した動作になりました。
 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などの表形式で返却される情報からユニークなキーワードを抽出 [#qd645956]
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のみを対象としユニークなキーワードを抽出 [#if47626c]
*** Select-ObjectとGet-Uniqueを使ってユニークなキーワードを抽出 [#mbd69e9d]
 PS C:\> Get-Process | Select-Object ProcessName | Get-Unique -AsString
 
 ProcessName
 -----------
 ApplicationFrameHost
 browser_broker
 Calculator
 conhost
 csrss
 ctfmon
 dasHost
 DbxSvc
 <省略>

*** Select-Objectのみでユニークなキーワードを抽出 [#o325162d]
 PS C:\> Get-Process | Select-Object ProcessName -Unique
 
 ProcessName
 -----------
 ApplicationFrameHost
 browser_broker
 Calculator
 conhost
 csrss
 ctfmon
 dasHost
 DbxSvc
 dllhost
 Dropbox
 <省略>

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

*** Sort-ObjectのみでProcessNameのユニークなキーワードを抽出する [#r3da9c9f]
 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コマンドを使ったユニークなキーワードを抽出方法でした。

#htmlinsertpcsp(win-btm.html,win-sp.html)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS