Recently, I received an interesting request from one of my clients. The client wanted to find a string in a file and return the line using PowerShell. In this tutorial, I will show you different methods to find a string in a file and return the line using PowerShell with examples.
To find a string in a file and return the line using PowerShell, you can utilize the Select-String cmdlet. For example, to search for the string “404” in a log file located at C:\Logs\WebServer.log, use the command:
Select-String -Path "C:\Logs\WebServer.log" -Pattern "404"This command will output all lines containing the specified string, making it an efficient way to search through files for specific text patterns.
1. Using Select-String
The Select-String cmdlet in PowerShell searches for text patterns in input strings and files.
Example: Search for Error Codes in Log Files
Suppose you are an IT administrator in a large corporation in the USA, and you need to search for all occurrences of the error code “404” in a web server log file located at C:\Logs\WebServer.log.
Select-String -Path "C:\Logs\WebServer.log" -Pattern "404"This command will output all lines containing the string “404”.
Example: Find Specific User Activity
Suppose you need to find all instances of a user with the username “jdoe” accessing a system. The log file is located at C:\Logs\UserActivity.log.
Select-String -Path "C:\Logs\UserActivity.log" -Pattern "jdoe"This will return all lines where the username “jdoe” appears.
Check out Replace Placeholders in Strings Using PowerShell
Method 2: Using Get-Content and ForEach-Object
Let me show you another method to find a string in a file and return the line using PowerShell and that is using the Get-Content and ForEach-Object.
We can use the Get-Content cmdlet to read the file line-by-line and ForEach-Object to process each line. Let me show you an example to show you how it works.
Example: Search for Specific IP Addresses
Let’s say you are tracking access to a server from a specific IP address, such as “192.168.1.1”, in a log file located at C:\Logs\Access.log.
Get-Content -Path "C:\Logs\Access.log" | ForEach-Object {
if ($_ -match "192.168.1.1") {
$_
}
}This script reads each line of the file and checks if it contains the IP address “192.168.1.1”. If it does, the line is outputted.
I executed the above PowerShell script, and you can see the output in the screenshot below. It returns the lines containing the specified string.

Check out Replace Multiple Characters in a String in PowerShell
Method 3: Using Get-Content with Where-Object
In PowerShell, you can also use the combination of Get-Content with Where-Object to find a string in a file and return the line using PowerShell.
Example: Search for Transactions Above a Certain Amount
Assume you are analyzing a financial transactions file located at C:\Logs\Transactions.log and you want to find all transactions above $1000.
Get-Content -Path "C:\Logs\Transactions.log" | Where-Object { $_ -match "\$1000" }This command filters and returns all lines containing the string “$1000”.
Method 4: Using Get-Content with Select-String for Large Files
For very large files, reading the entire file into memory might not be efficient. Instead, you can use Get-Content with the -ReadCount parameter to process the file in chunks.
Here is a complete PowerShell example.
Example: Search for Specific HTTP Status Codes
If you have a large web server log file and you need to find all occurrences of the HTTP status code “500”, you can use the following approach:
Get-Content -Path "C:\Logs\LargeWebServer.log" -ReadCount 1000 | ForEach-Object {
$_ | Select-String -Pattern "500"
}This command reads the file in chunks of 1000 lines and searches for the status code “500” within each chunk, making it more memory efficient.
Conclusion
PowerShell provides several methods to search for strings within files and return the lines containing those strings. By using Select-String, Get-Content with ForEach-Object, Get-Content with Where-Object, or a combination of Get-Content and Select-String, you can efficiently search through logs, configuration files, and more to find the information you need.
I hope you might find all these examples helpful.
You may like the following tutorials:
- How to Count the Number of Characters in a String in PowerShell?
- Check if a String Contains a Substring in PowerShell
- Convert Multiline String to Single Line 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.