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

从PowerShell或C#使用WMI-如何获取远程主机时间,包括毫秒?,c#,powershell,time,wmi,get-wmiobject,C#,Powershell,Time,Wmi,Get Wmiobject,我需要使用WMI获取远程主机日期和时间,包括毫秒 以下是不够好的: Get-WmiObject Win32_UTCTime -ComputerName MY_REMOTE_HOST 由于在Win32\u UTCTime类派生的Win32\u CurrentTime类中未实现毫秒: 毫秒 数据类型:uint32 访问类型:只读 没有实施 此属性是从Win32_CurrentTime继承的 () 如果有任何其他建议可以使用WMI从Powershell或C#获取此信息,我将不胜感激。请尝试Power

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

以下是不够好的:

Get-WmiObject Win32_UTCTime -ComputerName MY_REMOTE_HOST
由于在Win32\u UTCTime类派生的Win32\u CurrentTime类中未实现毫秒:

毫秒

数据类型:uint32

访问类型:只读

没有实施

此属性是从Win32_CurrentTime继承的

()


如果有任何其他建议可以使用WMI从Powershell或C#获取此信息,我将不胜感激。

请尝试Powershell远程处理:

$sess = New-PSSession -Credential (Get-Credential)
$dateTime = Invoke-Command -Session $sess -ScriptBlock { Get-Date -Format "o" }
要启用远程处理,请参见此


希望有帮助。

尝试PowerShell远程处理:

$sess = New-PSSession -Credential (Get-Credential)
$dateTime = Invoke-Command -Session $sess -ScriptBlock { Get-Date -Format "o" }
要启用远程处理,请参见此


希望有帮助。

WMI类win32\u operatingsystem包含一个名为LocalDateTime的属性,该属性也包含毫秒数。不过,您需要转换它们

简单示例:

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

输出是一个DateTime对象,它也包含毫秒。

WMI类win32\u operatingsystem包含一个名为LocalDateTime的属性,该属性也包含毫秒。不过,您需要转换它们

简单示例:

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

输出是一个DateTime对象,它也包含毫秒。

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

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

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

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

谢谢,但解决方案必须是通过WMIThanks,但解决方案必须是通过WMIThis。看起来不错,但我想知道——我们怎么可能从一个似乎没有时间场的对象中提取时间?我刚刚运行了“Get WmiObject Win32_operatingsystem-ComputerName MY_REMOTE_HOST”,返回的字段是:(SystemDirectory、Organization、BuildNumber、RegisteredUser、SerialNumber、Version)。默认情况下,您在Powershell中请求的许多WMI对象只显示属性的子集(因为Powershell有很多“模板”)内置以过滤掉数据)。通过将命令管道化到fl*(fl是格式列表的别名),您可以看到它们。使用Get Member,您还可以看到属性和数据类型(但无法看到值)。这似乎可行,但我想知道-我们如何从一个似乎没有时间字段的对象中提取时间?我刚刚运行了“Get WmiObject Win32_operatingsystem-ComputerName MY_REMOTE_HOST”,返回的字段是:(SystemDirectory、Organization、BuildNumber、RegisteredUser、SerialNumber、Version)。默认情况下,您在Powershell中请求的许多WMI对象只显示属性的子集(因为Powershell有很多“模板”)内置以过滤掉数据)。通过将命令管道化到fl*(fl是格式列表的别名),您可以看到它们。使用Get Member,您还可以看到属性和数据类型(但无法看到值)。