我有一个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)。
答案 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调用返回存储在一个单独的变量中,并进行比较。