Powershell WMI获得超过30天的软件

时间:2018-06-15 10:02:53

标签: powershell filter wmi wql

我正在尝试从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小于运算符的工作..有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用以下方式将$ Date30DaysAgo置于WMI时间戳格式中:

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

或使用

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

并在过滤器中使用该值