As a PowerShlell developer, many times, you will need to search through text files, logs, or even command output for specific strings. You can achieve this by using the Select-String cmdlet in PowerShell. In this tutorial, I will explain, how to use Select-String for exact matches with some examples.
PowerShell Select-String Cmdlet
Let me first explain to you what the Select-String cmdlet does in PowerShell.
This PowerShell cmdlet is used to search for text patterns within files or input strings. It’s similar to the grep command in Unix-based systems. By default, Select-String uses regular expressions to find matches, but it also supports literal string matches.
Here’s a basic example of how to use Select-String in PowerShell:
Get-Content file.txt | Select-String "error"This command will search for the word “error” in the file named “file.txt” and return any lines that contain a match.
Here is an example:
# Create a test file with sample content
@"
This is a test log file.
An error occurred while processing the request.
Everything is working fine.
Another critical error detected in the system.
"@ | Set-Content file.txt
# Search for lines containing 'error'
Get-Content file.txt | Select-String "error"Here is the exact output in the screenshot below:

Check out PowerShell Select-Object Value Only
Using Select-String for Exact Matches
While Select-String is great for finding patterns, sometimes you need to search for an exact string. Luckily, there are a few ways to achieve this. Let me show you each method with examples.
Method 1: Using the -SimpleMatch Parameter
The easiest way to perform an exact match with Select-String is to use the -SimpleMatch parameter in PowerShell. This tells the cmdlet to treat the search string as a literal string instead of a regular expression.
Here’s an example:
Get-Content file.txt | Select-String -SimpleMatch "error"This command will only return lines that contain the exact word “error”.
Here is an example:
# Create a test file with sample content
@"
This is a test log file.
An error occurred while processing the request.
Everything is working fine.
Another critical error detected in the system.
"@ | Set-Content file.txt
# Search for lines containing 'error' using -SimpleMatch
Get-Content file.txt | Select-String -SimpleMatch "error"I executed the script using VS code, and you can see the exact output in the screenshot below:

Read PowerShell Select-Object -First
Method 2: Escaping Special Characters
If you need to search for a string that contains special characters, such as periods or brackets, you can escape them using the backtick () character. This tells Select-String` to treat the special character as a literal character.
For example, to search for the string “file.txt”, you would use:
Get-Content file.txt | Select-String "file\.txt"The backslash before the period escapes it, ensuring that Select-String looks for the literal string “file.txt” instead of treating the period as a special character.
Method 3: Using the -CaseSensitive Parameter
By default, Select-String performs case-insensitive searches. If you need to perform a case-sensitive exact match, you can use the -CaseSensitive parameter.
Get-Content file.txt | Select-String -SimpleMatch -CaseSensitive "ERROR"This command will only return lines that contain the exact string “ERROR” with uppercase letters.
Read PowerShell Select-Object -Unique
Advanced Select-String Techniques
Now that you know how to perform exact matches with Select-String, let’s explore some more advanced techniques.
Searching Multiple Files
You can use Select-String to search multiple files at once by specifying a file path with wildcards. For example:
Select-String -Path "C:\Logs\*.log" -SimpleMatch "error"This command will search all files with the “.log” extension in the “C:\Logs” directory for the exact string “error”.
Displaying Surrounding Lines
Sometimes, you may want to see the lines surrounding a match for context. You can use the -Context parameter to specify the number of lines before and after the match to display.
Get-Content file.txt | Select-String -SimpleMatch "error" -Context 2This command will display the matched line, along with two lines before and after it.
Read PowerShell Select-Object Without Header
Counting Matches
If you just need to know how many times a string appears in a file or input, you can use the -Quiet parameter. This will return a Boolean value (True or False) indicating whether a match was found.
$containsError = Get-Content file.txt | Select-String -SimpleMatch "error" -QuietIn this example, the $containsError variable will be set to True if the string “error” is found in the file, and False otherwise.
PowerShell Select-String for Exact Matches Examples
Let’s look at a couple of real-world examples where using Select-String for exact matches can be helpful in PowerShell.
Example 1: Searching Log Files
As an IT professional, I often need to search through log files for specific error messages. Let’s say I have a log file named “application.log” and I want to find all occurrences of the exact error message “Failed to connect to database”.
Select-String -Path "application.log" -SimpleMatch "Failed to connect to database"This command will quickly show me all the lines in the log file that contain that specific error message.
Example 2: Verifying Configuration Files
Another common task is verifying the contents of configuration files. For example, let’s say I have a configuration file named “config.ini” and I want to ensure that it contains the line “API_KEY=1234567890”.
$containsApiKey = Select-String -Path "config.ini" -SimpleMatch "API_KEY=1234567890" -Quiet
if ($containsApiKey) {
Write-Host "API key is correctly configured."
} else {
Write-Host "API key is missing or incorrect."
}This script will check the “config.ini” file for the exact line “API_KEY=1234567890” and display a message indicating whether the API key is correctly configured.
Conclusion
PowerShell’s Select-String cmdlet is used for searching through text data. I hope this tutorial has helped you understand how to use Select-String for exact matches. If you have any questions or additional tips to share, please leave a comment below, and I will try to reply.
You may also like:
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.