Если вы хотите сопоставить свой первый массив, с чем-то, что должно совпадать с частью строки во втором массиве, вы делаете что-то вроде кода ниже:
$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.
Вы можете сделать этот код намного красивее, но это самый понятный способ, которым я могу его написать.
Старый ответ
Вы можете использовать командлет Compare-Object
для сравнения двух массивов, затем с помощью переключателя -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
Где тот, который не сделалне совпадает.