将LastBootUpTime从WMI转换为更友好的格式

时间:2016-11-22 16:48:03

标签: wmi ironpython

我有一个IronPython脚本,可以从WMI收集一些信息。我正在尝试收集的其中一项是来自LastBootUpTime的{​​{1}}。我可以使用以下方式获取信息:

Win32_OperatingSystem

结果如下

import clr

clr.AddReference('System.Management.Automation')

from System.Management.Automation import (
    PSMethod, RunspaceInvoke
)
RUNSPACE = RunspaceInvoke()

def wmi(query):
    return [dict([(prop.Name, prop.Value) for prop in psobj.Properties]) for psobj in RUNSPACE.Invoke(query)]

def to_ascii(s):
    # ignore non-ascii chars
    return s.encode('ascii','ignore')

operating_system = wmi('Get-WmiObject Win32_OperatingSystem -Namespace "root\CIMV2"')[0]
last_boot        = to_ascii(operating_system.get('LastBootUpTime'))

print last_boot

IronPython中是否有办法将此“时间戳”转换为更友好的格式?

1 个答案:

答案 0 :(得分:0)

使用ManagementDateTimeConverter类中的方法转换为.net对象。该字段特别是datetime,因此您希望使用ToDateTime()。您只需要添加对System.Management程序集的引用。

clr.AddReference('System.Management')
from System.Management import ManagementDateTimeConverter
print ManagementDateTimeConverter.ToDateTime(last_boot)