Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 日期转换yyyymmddhhmm+000_Powershell_Datetime_Wmi - Fatal编程技术网

Powershell 日期转换yyyymmddhhmm+000

Powershell 日期转换yyyymmddhhmm+000,powershell,datetime,wmi,Powershell,Datetime,Wmi,我试图通过Powershell从WMI获取SCCM MP的详细信息。 我可以从WMI获取数据,但日期格式不同,我无法转换。他可能缺乏一些知识 $query = Get-WmiObject -Query "SELECT * FROM SMS_MPInformation " -Namespace root\ccm\LocationServices -ComputerName "test_vm" $MP = $query.MP $Sitecode = $query.SiteCode $MPLastR

我试图通过Powershell从WMI获取SCCM MP的详细信息。 我可以从WMI获取数据,但日期格式不同,我无法转换。他可能缺乏一些知识

$query = Get-WmiObject -Query "SELECT * FROM SMS_MPInformation " -Namespace root\ccm\LocationServices -ComputerName "test_vm"

$MP = $query.MP
$Sitecode = $query.SiteCode
$MPLastRequestTime = $query.MPLastRequestTime
$MPLastUpdateTime = $query.MPLastUpdateTime
我得到的输出是好的,但是日期的格式有点不同

$MPLastRequestTime = 20191008000158.927000+000
其实应该是这样的

MPlastrequest时间:2019年10月8日00:01

谁能告诉我如何将其转换为上述格式。WMIExplorer工具能够转换它,所以我知道一定有办法。

尝试使用Get-CimInstance-Wmi cmdlet正在被重新定价,CIM应该以更可读的格式返回DateTime

尝试使用Get-CimInstance-Wmi cmdlet正在被重新定价,CIM应该以更可读的格式返回DateTime

除了他有用的回答之外。您可以像这样转换WMI时间戳:

$wmiTime = '20191008000158.927000+000'
$date = [DateTime]::new((([wmi]"").ConvertToDateTime($wmiTime)).Ticks, 'Local')
如果您需要日期为UTC,请执行以下操作:

$wmiTime = '20191008000158.927000+000'
$date = [DateTime]::new((([wmi]"").ConvertToDateTime($wmiTime)).Ticks, 'Local').ToUniversalTime()
后者将输出

2019年10月8日00:01:58

说明:

虽然WMI时间戳是UTC时间,但ConvertToDateTime函数返回本地时间中的日期,但遗憾的是将Kind属性设置为“Unspecified”

当您对其执行ToLocalTime时,该方法会再次添加时区偏移,从而导致错误的时间

由于.Kind属性在DateTime对象上是只读的,因此您需要使用转换后的WMI时间创建一个新的DateTime,以便将其Kind属性设置为“Local”。

除了的有用答案之外。您可以像这样转换WMI时间戳:

$wmiTime = '20191008000158.927000+000'
$date = [DateTime]::new((([wmi]"").ConvertToDateTime($wmiTime)).Ticks, 'Local')
如果您需要日期为UTC,请执行以下操作:

$wmiTime = '20191008000158.927000+000'
$date = [DateTime]::new((([wmi]"").ConvertToDateTime($wmiTime)).Ticks, 'Local').ToUniversalTime()
后者将输出

2019年10月8日00:01:58

说明:

虽然WMI时间戳是UTC时间,但ConvertToDateTime函数返回本地时间中的日期,但遗憾的是将Kind属性设置为“Unspecified”

当您对其执行ToLocalTime时,该方法会再次添加时区偏移,从而导致错误的时间


由于.Kind属性在DateTime对象上是只读的,因此您需要使用转换后的WMI时间创建一个新的DateTime,以便将其Kind属性设置为“Local”。

谢谢您的回答。我会测试它并让你知道。投票通过了。谢谢你的回答。我会测试它并让你知道。投票通过了。谢谢你的回答。我会测试它并让你知道。投票通过了。谢谢你的回答。我会测试它并让你知道。投票通过。