2011/09/09

長月3.プログラムの実行回数を出力させる仕組みをみてみる3

前回の続きです。

長月1.プログラムの実行回数を出力させる仕組みをみてみる
http://win-enikki.blogspot.com/2011/09/1.html
長月2.プログラムの実行回数を出力させる仕組みをみてみる2
http://win-enikki.blogspot.com/2011/09/1_05.html

前回、最後にスクリプト付け加えました。
これは最終実行時間と、できたデータをオブジェクトに入れる処理です。

#レジストリプロパティを入力、時間を出力
function convtime($x) {
    $LittleEndianTime=$x[60..67] | % { $_.tostring("x2") }
    $BigEndianTime=$null
    $($LittleEndianTime.count-1)..0 | % { $BigEndianTime += $LittleEndianTime[$_] }
 
    $filetime=[convert]::ToInt64("$BigEndianTime", 16)
    [datetime]::fromfiletime($filetime)
}
 
#オブジェクトに各データを入れデータ格納
$result = $iname | % {
    $count = $iProp.$_[4]
    if ($count -ne 0){
        $output = New-Object psobject
        $output | Add-Member noteproperty pcount $iProp.$_[4]
        $output | Add-Member noteproperty pname $(func $_)
        $output | Add-Member noteproperty ptime $(convtime $iprop.$_)
        $output      
    }
}
 
#お好みでオブジェクト整形
$result | sort-Object -Property ptime -Descending

この処理はだいたい以下のような動きをさせている



エンディアン
FileTime構造体

続いて、オブジェクト作成。実はPowerShellは、これ覚えておくと超便利


こうやってできたオブジェクト(今回は$result)は、データをまとめたりいじったりがとてもしやすい。
グリッドで出したり

24時間の間で使ったプログラムのみ出力とかも簡単にできる。


ということで、またほかに気になったスクリプトがあったら取り上げたいと思います。
(自分自身でもつくらなきゃだけど)

スポンサーリンク

スポンサーリンク