比较 Get-WmiObject(日期)结果

Compare Get-WmiObject (Date) Results

我有一个 PowerShell 脚本,可以从 API 中提取保修信息并将其保存到自定义 WMI Class。

然后我将该数据导入我们的 RMM 工具,以便它与我们的 PSA 解决方案同步,automating/updating 续订的保修结束日期。

当时我没有考虑的是:具有相同 属性 值的多项保修。因此,渲染我的提取值的穴居人脚本 where otherValue='specific text' 基本上无效。

因此,WMI Class 每个保修期将有一个实例,具有以下属性:

计算机名:SUMGAIZPC
结束日期:DD/MM/YYYY
货号:000-0000
型号:PewterPro 2000
ServiceLevelDescription:当我们到达它时
服务商:LOL
服务标签:1FSD51L;K
开始日期:DD/MM/YYYY

所以我敲定了一些接近于此的东西:

Get-WmiObject -Namespace root\Namespace -Class Warranty_Info |
    Where-Object ServiceLevelDescription -eq "How About Right Now" |
    Select-Object -ExpandProperty EndDate
Get-WmiObject -Namespace root\Namespace -Class Warranty_Info |
    Where-Object ServiceLevelDescritpion -eq "When We Get To It" |
    Select-Object -ExpandProperty EndDate
Get-WmiObject -Namespace root\Namespace -Class Warranty_Info |
    Where-Object ServiceLevelDescription -eq "You're Not Gonna Like It" |
    Select-Object -ExpandProperty EndDate

更重要的是,这些命令中的每一个实际上都是我们的 RMM 工具(对于那些熟悉的 LabTech)运行 脚本的一部分,并且是他们的 PowerShell 包装器 运行 的脚本的一部分,因此每个命令都是单独 运行,然后将结果存储在一个名为 %powershellresults% 的变量中。然后,我将 RMM 工具中数据字段的值设置为相应的 %powershellresults%.

现在,问题来了。有时,保修已更新。因此,当我从 API 获取信息时,会创建两个具有相同 ServiceLevelDescription 但两个完全不同的 EndDate 值的实例。其中 returns 12/15/2009 02/04/1974 到数据字段,而不仅仅是 12/15/2009。由于该字段将与我们 PSA 中的日期字段同步(只有一个),我只需要一个日期。

最后,我需要比较所有数据字段(针对每种不同类型的保修)以确定哪个日期最重要,但这是另一天的问题。

如果需要,我可以提供 any/all 个我目前拥有的脚本(大约 5 或 6 个)。

我会试一试,方法是 sortEndDate 字段上 select 只返回第一个实例。

如果你需要最早的日期,你可以试试这个:

Get-WmiObject -Namespace root\Namespace -Class Warranty_Info |
    Where-Object ServiceLevelDescription -eq "You're Not Gonna Like It" |
    Sort-Object EndDate |
    Select-Object -First 1 |
    Select-Object -ExpandProperty EndDate

至于最新的:

Get-WmiObject -Namespace root\Namespace -Class Warranty_Info |
    Where-Object ServiceLevelDescription -eq "You're Not Gonna Like It" |
    Sort-Object EndDate -Descending |
    Select-Object -First 1 |
    Select-Object -ExpandProperty EndDate

格式提示:select代码,按Ctrl+K^_^

编辑:然后,如果您需要比较每种保修类型的日期,您可以将每个 WMI 调用 returns 存储在一个单独的变量中,然后进行比较。