by kusakari
6. 11月 2009 21:39
PowerShellでサーバーやクライアントの起動日時と、稼働している期間を取得してみたいと思います。
■前回起動した日時
Win32_OperatingSystem クラスの LastBootupTime プロパティを読むことで、前回起動した日時を取得することが出来ます。
■WMIでの日時データの型
WMIで、日時データの型は CIM_DATETIME という型で、フォーマットは次のようになっています。
| yyyymmddHHMMSS.mmmmmmsUUU |
詳しくは下記のMSDNをご覧ください。
http://msdn.microsoft.com/en-us/library/aa387237%28VS.85%29.aspx ちなみに下記のコマンドレットを打ち込んで、確認することが出来ます。
gwmi Win32_OperatingSystem | select LastBootUpTime
ただ、このままの型だと日時の計算が出来ないので、WMIの SWbemDateTime の GetVarDate を利用します。
■SWbemDateTime
この CIM_DATETIME 扱うには、下記のような感じで、SWbemDateTime を作成して、Value プロパティに CIM_DATETIME を指定して GetVarDate で変換します。
New-Object -ComObject WbemScripting.SWbemDateTime
詳しくは下記のMSDNをご覧ください。
http://msdn.microsoft.com/en-us/library/aa393687.aspx
■サンプル1(前回起動日時の取得)
$wmi = gwmi Win32_OperatingSystem
$date = New-Object -ComObject WbemScripting.SWbemDateTime
$date.Value = $wmi.LastBootUpTime
$date.GetVarDate($true)
■サンプル1 結果
■サンプル2(稼働時間の取得)
$wmi = gwmi Win32_OperatingSystem
$date = New-Object -ComObject WbemScripting.SWbemDateTime
$date.Value = $wmi.LastBootUpTime
$date.GetVarDate($true)
New-TimeSpan $date.GetVarDate($true) (Get-Date)
■サンプル2 結果

18c97859-f4e7-47c4-8f85-0f0f8f4bf5f3|0|.0
Category: PowerShell
Tags: