Powershell WMI 获取超过 30 天的软件

Powershell WMI get software older than 30 days

我正在尝试从 WMI 中的 configMgr 获取所有超过 30 天的软件更新,我似乎无法弄清楚。

WMI 中的时间格式为:DateRevised:20121113180000.000000+000

我尝试了以下方法:

$Date30DaysAgo = (get-date).AddDays(-30).ToString("yyyymmddHHMMSS")

Get-WmiObject -Namespace "root\SMS\site_PS1" -Class SMS_SoftwareUpdate -ComputerName SRVSCCM01 -Filter {"DateRevised <= '$($Date30DaysAgo)%'"}

这是有效的,但我需要让它工作,-Filter 而不是 where-object

$Date30DaysAgo = (get-date).AddDays(-30)

Get-WmiObject -Namespace "root\SMS\site_PS1" -Class SMS_SoftwareUpdate -ComputerName SRVSCCM01 | Where-Object {$_.ConvertToDateTime($_.DateRevised) -lt $Date30DaysAgo }

这可能是因为我无法让时间转换和 WQL 小于运算符工作。有人可以指出我正确的方向吗?

您可以尝试使用以下方法将 $Date30DaysAgo 放入 WMI 时间戳格式:

$Date30DaysAgo = ([wmi]"").ConvertFromDateTime((get-date).AddDays(-30))

或使用

$Date30DaysAgo = [System.Management.ManagementDateTimeConverter]::ToDmtfDateTime(((get-date).AddDays(-30)).ToUniversalTime())

并在您的过滤器中使用该值