25 April,2017 by Tom Collins
Question: I am trying to monitor a log file – used by a third party software. It is a text file where results are dumped if a file transfer is successful. I want to use a powershell script to parse the log file and check if a certain string exists.
I already have the scheduling and communication aspect of the job in place.
I want to return all the lines which match the criteria , and then only the part of the line which is relevant.
For example:
12 May 2017 the file myBACKUPfile.BAK was transferred to the target destination
I want to return the text file myBACKUPfile.BAK
How can I use powershell to get this result?
Answer: Powershell has a cmdlet called select-string. Combining select-string with regex is a good basis to start. There are alternative ways of getting the same results.But in terms of simplicity and functionality – this method is effective
Here is an example of a line of Powershell code.
get-content "N:\mypath\myfile.txt"|select-string "^(?!.*(file)).*[a-zA-Z0-9].BAK"
This code grabs the content with the get-content cmdlet. We are asking for some action to occur on this content. The select-string cmdlet is used to search for a text pattern between two words.
In this case I’m using regular expressions to apply the pattern, The two words are “file” and “.BAK” .
In summary , the code is consuming a file , and then searching for a text pattern between two words and returns a list.
You may then want to push to another file and Send email from Powershell with attachment or place into a database etc
This is only a preview. Your comment has not yet been posted.
As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.
Having trouble reading this image? View an alternate.
Posted by: |