从 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)
我需要使用 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)