#author("2019-02-19T23:32:27+09:00","","")
#navi(../)
* PowerShellでユニークキーワードを取得する方法・Get-Unique・Sort-Object [#cd065e7e]
配列やGet-Processなどの表形式で返却される情報について、ユニークキーワードを取得する例を以下に記します。
#contents
#htmlinsert(win_ads_top.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コマンドを使ったユニークなキーワードを抽出方法でした。
#htmlinsert(win_ads_btm.html)