比较Get-WmiObject(Date)结果

时间:2016-10-28 22:28:23

标签: powershell compare wmi

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

然后我将这些数据带入我们的RMM工具,以便它与我们的PSA解决方案同步,自动化/更新续订的保修结束日期。

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

因此,WMI类将具有每个保修的实例,具有以下属性:

ComputerName: SUMGAIZPC
EndDate: DD/MM/YYYY
ItemNumber: 000-0000
Model: PewterPro 2000
ServiceLevelDescription: When We Get To It
ServiceProvider: LOL
ServiceTag: 1FSD51L;K
StartDate: 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值。这会将12/15/2009 02/04/1974返回到数据字段,而不仅仅是12/15/2009。由于该领域将与PSA中的日期字段同步(只有一个),我只需要一个日期。

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

如果需要,我可以提供我目前拥有的任何/所有脚本(约5或6)。

1 个答案:

答案 0 :(得分:0)

我试一试sort EndDate字段,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

格式化提示:选择代码,按Ctrl + K ^ _ ^

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