将WMI的LastBootUpTime转换为更友好的格式
问题描述:
我有一个IronPython脚本从WMI收集一些信息。我试图收集的项目之一是从Win32_OperatingSystem
。我能够用得到的信息:将WMI的LastBootUpTime转换为更友好的格式
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
结果如下
20161117135516.486400-300
是否有IronPython的方式来转换这个“时间戳”,以更加友好的格式?
答
使用ManagementDateTimeConverter
类中的方法将其转换为.net对象。该字段尤其是datetime
,因此您需要使用ToDateTime()
。您只需要添加对System.Management
组件的引用即可。
clr.AddReference('System.Management')
from System.Management import ManagementDateTimeConverter
print ManagementDateTimeConverter.ToDateTime(last_boot)
工作完美。谢谢。 – user3783772