如果你想匹配你的第一个数组,并且应该匹配第二个数组中字符串的一部分,你可以执行以下代码:
$A = @("0c7d3283-bec2-4db1-9078-ebb79d21afdf", "200bc957-26dd-4e8e-aa6e-00dc357c4ac2", "218e0d2a-0e8b-4a68-8136-8f5dd749a614")
$B = @("Something 0c7d3283-bec2-4db1-9078-ebb79d21afdf", "Something else 200bc957-26dd-4e8e-aa6e-00dc357c4ac2", "Something also e3df3978-beb7-4545-bc48-ff40d8453be1")
foreach ($Line in $A) {
if($B -match $Line) {
$B | Where-Object {$_ -match $Line}
}
}
我们首先遍历第一个对象中的所有行,然后比较该行是否与第二个数组中的任何内容匹配。如果我们找到匹配项,我们将通过数组 B 找到 A 中的 Line 匹配的位置。
你可以让这段代码更漂亮,但这是我能写出的最容易理解的方式。
旧答案
您可以使用Compare-Object
cmdlet 比较两个数组,然后使用-IncludeEqual
开关显示匹配的位置,然后使用-ExcludeDifferent
开关删除不匹配的结果。然后获取该输出并放入文件中。一个简单的测试可能是这样的:
$A = @("0c7d3283-bec2-4db1-9078-ebb79d21afdf", "200bc957-26dd-4e8e-aa6e-00dc357c4ac2", "218e0d2a-0e8b-4a68-8136-8f5dd749a614")
$B = @("0c7d3283-bec2-4db1-9078-ebb79d21afdf", "200bc957-26dd-4e8e-aa6e-00dc357c4ac2", "e3df3978-beb7-4545-bc48-ff40d8453be1")
(Compare-Object -ReferenceObject $A -DifferenceObject $B -ExcludeDifferent -IncludeEqual).InputObject | Out-File .\output.txt
这应该在您的 Shells 当前工作目录中输出一个文件,其中两个 GUID 匹配:
0c7d3283-bec2-4db1-9078-ebb79d21afdf
200bc957-26dd-4e8e-aa6e-00dc357c4ac2
不匹配的不包括在内。