Do you need to compare two arrays to find matches in PowerShell? In this article, we’ll explore different methods to compare two arrays for matches in PowerShell with complete examples.
To compare two arrays for matches in PowerShell, you can use the Compare-Object cmdlet with the -ReferenceObject and -DifferenceObject parameters to identify similarities. Alternatively, loop through one array and use the -contains operator to check if each item exists in the second array. For a more concise approach, leverage LINQ’s Intersect method to find common elements directly.
Compare Two Arrays for Matches in PowerShell
Now, let us check out how to compare two arrays for matches in PowerShell.
Method 1: Using Loops
The most basic method to compare two arrays is by using loops to iterate through each element and check for matches in PowerShell.
$array1 = @('apple', 'banana', 'cherry')
$array2 = @('banana', 'kiwi', 'apple')
foreach ($item1 in $array1) {
foreach ($item2 in $array2) {
if ($item1 -eq $item2) {
Write-Output "Match found: $item1"
}
}
}In this example, we have two arrays $array1 and $array2, and we use nested foreach loops to iterate through each element. If an element from $array1 matches an element from $array2, we output the match.
You can see the output in the screenshot below after I executed the VS code.

Method 2: Using -contains Operator
A more efficient way to find matches is to use the -contains operator, which checks if a single value is present in an array in PowerShell.
$array1 = @('apple', 'banana', 'cherry')
$array2 = @('banana', 'kiwi', 'apple')
foreach ($elem in $array1) {
if ($array2 -contains $elem) {
Write-Output "Match found: $elem"
}
}This method is more straightforward and faster than using nested loops, as it eliminates the need for the inner loop.
Method 3: Using Compare-Object Cmdlet
PowerShell provides a cmdlet called Compare-Object that compares two sets of objects. It’s a powerful tool that can show differences as well as similarities between arrays in PowerShell.
$array1 = @('apple', 'banana', 'cherry')
$array2 = @('banana', 'kiwi', 'apple')
$comparison = Compare-Object -ReferenceObject $array1 -DifferenceObject $array2 -IncludeEqual
foreach ($result in $comparison) {
if ($result.SideIndicator -eq '==') {
Write-Output "Match found: $($result.InputObject)"
}
}The Compare-Object cmdlet uses -ReferenceObject and -DifferenceObject parameters to specify the arrays to compare. The SideIndicator property tells us whether the object is present in both arrays (==), only in the reference array (<=), or only in the difference array (=>).
You can see this in the screenshot below:

Method 4: Using LINQ
For those who are familiar with .NET, PowerShell can leverage the LINQ (Language Integrated Query) to compare arrays.
$array1 = @('apple', 'banana', 'cherry')
$array2 = @('banana', 'kiwi', 'apple')
$matches = [System.Linq.Enumerable]::Intersect($array1, $array2)
foreach ($match in $matches) {
Write-Output "Match found: $match"
}Here, we use the Intersect method from the System.Linq.Enumerable class to find common elements between $array1 and $array2.
Conclusion
Comparing arrays for matches in PowerShell can be done using different methods. You can use the simple loops and the -contains operator to understand the basics of array comparison in PowerShell. As you become more comfortable with PowerShell, you can use more advanced methods like Compare-Object or LINQ to perform the same task more efficiently.
In this PowerShell tutorial, I have explained how to compare two arrays for matches in PowerShell using various methods and examples.
You may also like:
- Compare Two Arrays for Missing Elements in PowerShell
- Create an Array Of Objects In PowerShell
- Convert an Array to a String in PowerShell
- Create Empty Array And Add Items In PowerShell
- How to Replace Values in an Array in PowerShell?
Bijay Kumar is an esteemed author and the mind behind PowerShellFAQs.com, where he shares his extensive knowledge and expertise in PowerShell, with a particular focus on SharePoint projects. Recognized for his contributions to the tech community, Bijay has been honored with the prestigious Microsoft MVP award. With over 15 years of experience in the software industry, he has a rich professional background, having worked with industry giants such as HP and TCS. His insights and guidance have made him a respected figure in the world of software development and administration. Read more.