2011年5月17日火曜日

◆自動デフラグのイベントログを表示する

Windows7ではデフォルトで各ドライブのデフラグを自動的に行うようになっている。

その自動で行われたデフラグのイベントログを表示するサンプルがあったので紹介しておく。

Analyze automatic defragmentation - Power Tips - Powershell.com Powershell Scripts, Tips and Resources

転載するとこんな感じ。

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が代入されるのと同じだ。

結果はこんな感じになる。

image

0 件のコメント:

コメントを投稿