【问题标题】:Powershell WMI get software older than 30 daysPowershell WMI 获取超过 30 天的软件
【发布时间】:2018-06-15 10:02:53
【问题描述】:

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

【问题讨论】:

    标签: powershell filter wmi wql


    【解决方案1】:

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

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

    或使用

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      相关资源
      最近更新 更多