从 PowerShell 或 C# 使用 WMI - 如何获取远程主机时间,包括毫秒?

Using WMI from PowerShell or C# - how can I get remote host time, including milliseconds?

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

以下内容还不够好:

Get-WmiObject Win32_UTCTime -ComputerName MY_REMOTE_HOST

由于 Win32_CurrentTime class 中未实现毫秒,而 Win32_UTCTime class:

Milliseconds

Data type: uint32

Access type: Read-only

Not implemented.

This property is inherited from Win32_CurrentTime.

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

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

尝试 PowerShell 远程处理:

$sess = New-PSSession -Credential (Get-Credential)
$dateTime = Invoke-Command -Session $sess -ScriptBlock { Get-Date -Format "o" }

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

希望对您有所帮助。

WMI class win32_operatingsystem 包含一个名为 LocalDateTime 的 属性,它还包含毫秒。不过你需要转换它们。

简单示例:

$OS = Get-WmiObject win32_operatingSystem
$OS.ConvertToDateTime($OS.LocalDateTime)

输出是一个包含毫秒数的 DateTime 对象。

@bluuf 的答案是您应该使用的答案,但作为更复杂的替代方案,您可以从性能计数器 WMI 类 中获取当前 date/time,如下所示:

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