In PowerShell, you can use the Where-Object cmdlet with a logical operator -or to combine multiple conditions.
The following methods show how you can do it with syntax.
Method 1: Filtering with Where-Object and -Or
$employees = @(
[PSCustomObject]@{ Name = "Alex"; Age = 30; Department = "IT" },
[PSCustomObject]@{ Name = "Gary"; Age = 35; Department = "Sales" },
[PSCustomObject]@{ Name = "Ricky"; Age = 38; Department = "IT" }
)
$result = $employees | Where-Object { $_.Age -gt 35 -or $_.Department -eq "IT"}
$result
This example will return the employees with age greater than “35” or who belong to the “IT” department.
Method 2: Filtering with Where-Object and -or for Strings
$languages = @("Python", "C#", "C", "C++", "VB", "Java", "Go")
$result = $languages | Where-Object { $_ -like "C" -or $_ -like "Go"}
$result
This example will return languages “C” or “Go“.
The following examples show how you can use these methods.
Filtering with Where-Object and -Or
Suppose you have an array of custom objects representing employees, and you want to filter for employees having age more than 35 years or belong to the IT department.
# Define an array of custom objects
$employees = @(
[PSCustomObject]@{ Name = "Alex"; Age = 30; Department = "IT" },
[PSCustomObject]@{ Name = "Gary"; Age = 35; Department = "Sales" },
[PSCustomObject]@{ Name = "Ricky"; Age = 38; Department = "IT" }
)
# Use Where-Object with the -or operator to filter the array
$result = $employees | Where-Object { $_.Age -gt 35 -or $_.Department -eq "IT"}
# Output the filtered result
$result
Output:

In this example, we define $employees array of custom objects with properties Name, Age, and Department.
We then pipe the $employees into the Where-Object cmdlet to filter the array to include objects where the Age property is greater than 35 or the Department property is IT and stores the result in $result.
Finally, we print the $result on the terminal that displays the filtered result.
Filtering with Where-Object and -or for Strings
Suppose you have an array of strings representing programming languages and want to filter for strings containing “C” or “Go“.
# define an array of strings
$languages = @("Python", "C#", "C", "C++", "VB", "Java", "Go")
# Use the Where-Object with the -or operator to filter strings
$result = $languages | Where-Object { $_ -like "C" -or $_ -like "Go"}
# Output the filtered result
$result
Output:

In this example, we define a $languages array that represents programming languages. We then pipe the $languages to the Where-Object cmdlet to filter for strings.
The Where-Object command uses the -or operator to specify multiple conditions, including programming languages containing “C” or “Go” and storing the result in $result.
Finally, we print the output on the terminal.
Conclusion
I hope the above article on filtering objects with the Where-Object cmdlet in PowerShell with the -or operator is helpful to you.
You can find more topics about Active Directory tools and PowerShell basics on the ActiveDirectoryTools home page.