比较 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 个)。
我会试一试,方法是 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
格式提示:select代码,按Ctrl+K^_^
编辑:然后,如果您需要比较每种保修类型的日期,您可以将每个 WMI 调用 returns 存储在一个单独的变量中,然后进行比较。
我有一个 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 个)。
我会试一试,方法是 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
格式提示:select代码,按Ctrl+K^_^
编辑:然后,如果您需要比较每种保修类型的日期,您可以将每个 WMI 调用 returns 存储在一个单独的变量中,然后进行比较。