The PowerShell Data Provider in exMon can be used for various things. In this post I will create a test in exMon, using PowerShell and regular expression, to find all lines in text files that contain a specific pattern. In this case, we will look for all lines that contain two or more semi commas.   

1. Create a new Query in exMon Administrator by right clicking the Tests folder and select the Data Provider: PowerShell 

2. In the query window add the following PowerShell script:

# The files to check for
$path = "C:\temp\Names*.txt"
# The regex pattern to look for. This case, two or more semicommas in a line
$regex = "(.*);(.*);(.*)"

# Create the result DataTable
$exMonResult= New-Object system.Data.DataTable

$exMonResult.columns.add(($cFileName = New-Object system.Data.DataColumn FileName,([string])))
$exMonResult.columns.add(($cLineNum = New-Object system.Data.DataColumn LineNum,([int])))
$exMonResult.columns.add(($cText = New-Object system.Data.DataColumn Text,([string])))


# Loop through the files
$files = Get-ChildItem $path
foreach ($file in $files) 
{
    # Loop through each line in the file
    $lineNum = 0
    foreach($line in Get-Content $file) {
        $lineNum++

        # If we match, add to our results
        if($line -match $regex){
            $row = $exMonResult.NewRow();

            $row.FileName = $file;
            $row.LineNum = $lineNum;
            $row.Text = $line;

            $exMonResult.Rows.Add($row)
        }
    }
}

3. Change the $path variable to match your files 

4. Change the $regex variable to match your regular expression pattern. 

5. Configure email settings and schedule as normal. 

Example email from the test: