2013-12-09 48 views
1

如何從Win32Reg_AddRemovePrograms獲取InstallDate以按日/月/年顯示?Powershell Win32Reg_AddRemovePrograms獲取日期輸出

這是我需要使用命令

得到-WmiObject可以-Class Win32Reg_AddRemovePrograms -ComputerName AComputer | {$ _。DisplayName -notlike「hotfix」-and $ _。DisplayName -notlike「Security Update」-and $ _。DisplayName -notlike「* Update for Windows *」} |選擇DisplayName,Version,Publisher,InstallDate

回答

3

如果InstallDate看起來像Win32_Product類的InstallDate(如20131209):

[DateTime]::ParseExact('20131209','yyyyMMdd',$null).ToString('dd/MM/yyyy') 
+0

謝謝Shay。正如我從另一個答覆中看到的,這不會從64位安裝的軟件獲取信息。所以我想我需要從註冊表中獲取這些信息,如果這是比使用Win32_Product更快的方法。 – user1890242

+0

無論如何,就我所知,日期值的格式是相同的。 –

1

一種方法是格式化日期,如下面的示例。

$date=Get-Date 

週一,2013年12月9日上午5時29分50秒

$date.ToString("dd/MM/yyyy") 

2013年9月12日

編輯: 我沒有獲得Win32Reg_AddRemovePrograms,所以未經測試。
嘗試添加這到底:

| %{ $_.InstallDate = ($_.InstallDate.tostring("dd/MM/yyyy")); $_ } 

所以最後:(加`換行)

get-wmiobject -Class Win32Reg_AddRemovePrograms -ComputerName AComputer| ` 
where {$_.DisplayName -notlike "hotfix" -and $_.DisplayName -notlike "Security Update" -and $_.DisplayName -notlike "*Update for Windows *"} | ` 
select DisplayName,Version,Publisher,InstallDate | ` 
%{ $_.InstallDate = ($_.InstallDate.tostring("dd/MM/yyyy")); $_ } 

,或者如果在日期格式,與吉文所提到的,

| %{ $_.InstallDate = ([DateTime]::ParseExact($_.InstallDate,'yyyyMMdd',$null).ToString('dd/MM/yyyy')) ;$_} 

全文:

get-wmiobject -Class Win32Reg_AddRemovePrograms -ComputerName AComputer| ` 
where {$_.DisplayName -notlike "hotfix" -and $_.DisplayName -notlike "Security Update" -and $_.DisplayName -notlike "*Update for Windows *"} | ` 
select DisplayName,Version,Publisher,InstallDate | ` 
%{ $_.InstallDate = ([DateTime]::ParseExact($_.InstallDate,'yyyyMMdd',$null).ToString('dd/MM/yyyy')) ;$_} 
+0

不好意思忘了文章中,我使用 – user1890242

+0

沒問題的命令,我添加了一個編輯到我的答案 – malexander

2

只是爲了讓你知道Win32Reg_AddRemovePrograms類不是一個普通的類,它是由SMS/SCCM添加的。它也只顯示與32位程序相關的信息。 Source
因爲這個原因,我沒有班上可用的班級,也無法爲您提供確切的步驟。請提供輸出的這個命令:

$item = $gwmi Win32Reg_AddRemovePrograms | select -first 1 
$item.InstallDate 
$item.InstallDate.GetType().fullname 
+0

感謝您指出它不會從64位程序獲取信息的事實。 – user1890242