我在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
答案 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