Windows7ではデフォルトで各ドライブのデフラグを自動的に行うようになっている。
その自動で行われたデフラグのイベントログを表示するサンプルがあったので紹介しておく。
転載するとこんな感じ。
001 002 003 004 | get-eventlog -LogName Application -InstanceId 258 | ForEach-Object {$i=1|Select-Object Date, Type, Drive;` $i.Date = $_.TimeWritten; $i.Type,` $i.Drive = $_.ReplacementStrings; $i } |
-- 20150412 改行がむちゃくちゃでわかりづらいので修正--
001 002 003 004 005 006 007 | get-eventlog -LogName Application -InstanceId 258 | % { $i=1|Select-Object Date, Type, Drive $i.Date = $_.TimeWritten $i.Type,$i.Drive = $_.ReplacementStrings $i } |
------------------------------------------------------------------------------
ちょっと分かりづらいので若干補足。
$i=1|Select-Object Date, Type, Drive
は、オブジェクトを作ってプロパティ(Date,Type,Drive)を追加し、$i
変数に格納している。
普通に(正統に?)やるならばPowerShell: ◆カスタムオブジェクト(PsObject)を使う(New-Object)2のようにPsObjectを使うのかと思うが、ここでは簡略的にint32オブジェクト(1)にプロパティを追加して使っている。
また、3,4行目では、$i.Type,$i.Drive = $_.ReplacementStrings
でTypeプロパティとDriveプロパティにReplacementStringsの配列の値をそれぞれ格納している。
これは、$a,$b = 1,2
とやって、$aには1、$bには2が代入されるのと同じだ。
結果はこんな感じになる。
0 件のコメント:
コメントを投稿