比较Get-WmiObject (Date)的结果



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

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

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

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

<>以前ComputerName: SUMGAIZPCEndDate: DD/MM/YYYYItemNumber): 000 - 0000型号:PewterPro 2000ServiceLevelDescription:当我们得到它ServiceProvider:哈哈ServiceTag: 1 fsd51l; KStartDate可以:DD/MM/YYYY 之前

所以我写出了类似这样的东西:

Get-WmiObject -Namespace rootNamespace -Class Warranty_Info |
    Where-Object ServiceLevelDescription -eq "How About Right Now" |
    Select-Object -ExpandProperty EndDate
Get-WmiObject -Namespace rootNamespace -Class Warranty_Info |
    Where-Object ServiceLevelDescritpion -eq "When We Get To It" |
    Select-Object -ExpandProperty EndDate
Get-WmiObject -Namespace rootNamespace -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)。

我将给它一个尝试,通过sortEndDate字段和select只返回第一个实例。

如果你需要最古老的日期,你可以试试:

Get-WmiObject -Namespace rootNamespace -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 rootNamespace -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调用返回存储在一个单独的变量中,并对它们进行比较。

最新更新