我正在尝试从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小于运算符的工作..有人能指出我正确的方向吗?
答案 0 :(得分:1)
您可以尝试使用以下方式将$ Date30DaysAgo置于WMI时间戳格式中:
$Date30DaysAgo = ([wmi]"").ConvertFromDateTime((get-date).AddDays(-30))
或使用
$Date30DaysAgo = [System.Management.ManagementDateTimeConverter]::ToDmtfDateTime(((get-date).AddDays(-30)).ToUniversalTime())
并在过滤器中使用该值