通过PowerShell或C#使用WMI-如何获得远程主机时间(包括毫秒)?

时间:2018-12-17 14:31:46

标签: c# powershell time wmi get-wmiobject

我需要使用WMI获取远程主机的日期和时间,包括毫秒。

以下内容不够好:

Get-WmiObject Win32_UTCTime -ComputerName MY_REMOTE_HOST

由于Win32_UTCTime类派生的Win32_CurrentTime类未实现毫秒,因此:

  

毫秒

     

数据类型:uint32

     

访问类型:只读

     

未实现。

     

此属性是从Win32_CurrentTime继承的。

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/wmitimepprov/win32-currenttime

对于使用WMI从Powershell或C#获取此信息的任何其他建议,我将不胜感激。

3 个答案:

答案 0 :(得分:3)

WMI类win32_operatingsystem包含一个名为LocalDateTime的属性,该属性还包含毫秒。您需要将它们转换。

简单示例:

1000
300
20
1234
1200

输出是一个DateTime对象,该对象还包含毫秒。

答案 1 :(得分:2)

@bluuf的答案是您应该使用的答案,但是作为更复杂的选择,您可以从性能计数器WMI类中获取当前日期/时间,如下所示:

$perfTime = Get-CimInstance -Query "Select * FROM Win32_PerfRawData_PerfOS_Processor WHERE Name = '0'"
(Get-Date "01/01/1601").AddTicks($perfTimeime.Timestamp_Sys100NS)

答案 2 :(得分:1)

尝试PowerShell远程处理:

version 2 -> version 1

要启用远程处理,请参见此link

希望有帮助。