Powershell ConvertToDateTime()方法和Get-WMiObject

时间:2013-06-18 14:03:53

标签: powershell

我在PS中生成一个报告,一切正常,但是当我尝试使用 ConvertToDateTime 来使日期可读时,它是空白的吗?但只有Get-WmiObject Win32_Product 其他像Win32_Operatingsystem似乎出色了。

$Install = @{n="Installed";e={$_.ConvertToDateTime($_.InstallDate)}}
$frag14 = Get-WmiObject Win32_Product -ComputerName $name | Select Name,Version,PackageName,$Install,Vendor | Sort Name | 
ConvertTo-html -Fragment 

3 个答案:

答案 0 :(得分:2)

InstallDate只是一个字符串,它是一个基于CIM的日期字符串。试试这个:

$Install = @{n="Installed";e={[DateTime]::ParseExact($_.InstallDate,'yyyyMMdd',$null)}}

答案 1 :(得分:0)

你不会在win32_product类中获得安装日期,这是一个已知的错误。

答案 2 :(得分:0)

根据Win32_Product的类定义,请参阅MSDN InstallDate只是一个字符串,不是基于CIM的字符串。该字符串包含格式为yyyyMMdd的日期,即“20170417”。 InstallDate2是一个CIM基本日期时间字符串。具体来说,它是CIM_DateTime数据类型,其中应包含此格式的值yyyymmddHHMMSS.mmmmmmsUUU,其中sUUU是以分钟为单位的时区偏移量。即20170417101205.000000-420。

建议供应商使用此Win32_Product类进行填充,但遗憾的是InstallDate2不是必需的,通常总是为空。来自MSDN的Win32_Product类的部分定义。

class Win32_Product : CIM_Product
{ uint16   AssignmentType;
  string   Caption;
  string   Description;
  string   IdentifyingNumber;
  string   InstallDate;
  datetime InstallDate2;
...

以下Powershell命令列出已安装产品的所有及安装日期(警告非常慢)。

Get-WmiObject -Class Win32_Product | Select-Object -Property Name, InstallDate, InstallDate2