我正试图在两个第三方支持服务之间确定我们的哪些票证在两个门户网站上都显示为关闭。我有一个CSV导出的票证,两者都有相关字段。
到目前为止,我有这个:
$EXTrange = Import-Csv -Path '/Range.csv'
$INTrange = Import-Csv -Path '/export (14).csv'
$ClosedInternal = $INTrange |
Where-Object status -eq "Closed"
$ICTickets = $EXTrange |
Where-Object "Customer Ticket Reference" -eq $ClosedInternal
foreach ($thing in $ClosedInternal) {
Write-Host $ICTickets."Ticket ID"
}
客户票证参考和ID字段将匹配,因为它们是我们的票证编号。
我只需要比较这两个列表,匹配外部和内部引用字段,检查它是否处于关闭状态,如果是,则告诉我$EXTrange."Ticket ID"
中的外部公司票证引用。
我觉得我很接近,但不知道如何为每个匹配的已关闭机票返回机票ID。
$ClosedInternal
可能是一个数组,还包含对象,而不仅仅是要检查的属性的值。将其与一个简单的值进行比较总是会产生"不相等"的结果。如果要检查值列表中是否存在特定值,则需要使用-contains
运算符(如果至少运行PowerShell v3,则可以使用-in
运算符(,并且需要展开对象列表的相关属性以获得要进行比较的值列表。
更改此项:
$ClosedInternal = $INTrange |
Where-Object status -eq "Closed"
$ICTickets = $EXTrange |
Where-Object "Customer Ticket Reference" -eq $ClosedInternal
进入这个:
$ClosedInternal = $INTrange |
Where-Object status -eq "Closed" |
Select-Object -Expand 'Ticket ID'
$ICTickets = $EXTrange |
Where-Object $ClosedInternal -contains "Customer Ticket Reference"
代码应该做你想做的事。如果内部票证的ID属性的名称不同,请使用正确的名称替换'Ticket ID
。