Understanding Sequential Filtering

by Aug 22, 2014

All PowerShell Versions

When you parse text-based log files, or need to filter other types of information, you typically use Where-Object. Here are the common scenarios that illustrate how to combine filters:

# logical AND filter for ALL keywords
Get-Content -Path C:\windows\WindowsUpdate.log | 
  Where-Object { $_ -like '*successfully installed*' } |
  Where-Object { $_ -like '*framework*' } |
  Out-GridView

# above example can also be written in one line
# by using the -and operator
# the resulting code is NOT faster, though, just harder to read
Get-Content -Path C:\windows\WindowsUpdate.log | 
  Where-Object { ($_ -like '*successfully installed*') -and ($_ -like '*framework*') } |
  Out-GridView

# logical -or (either condition is met) can only be applied in one line
Get-Content -Path C:\windows\WindowsUpdate.log | 
  Where-Object { ($_ -like '*successfully installed*') -or ($_ -like '*framework*') } |
  Out-GridView

Twitter This Tip! ReTweet this Tip!