Created by: Kristinn Magnusson
If you have a process which fails when a file is open and locked in another program, you can use PowerShell in exMon to monitor and notify you when that happens.
- Create a new Query in exMon Data Governance by right-clicking the Tests folder
- Create a new query & name it Powershell Demo
- Select the PowerShell Data Provider
- Add the following PowerShell script to the Query window:
# The file to check for
$path = 'C:\temp\test.xlsx'
# Check if we can get an exclusive read on a file
# Returns the exception if unsuccessful
# Returns empty results if it reads successfully
# Create the result DataTable
$exMonResult= New-Object system.Data.DataTable
$col1 = New-Object system.Data.DataColumn Error,([string])
$exMonResult.columns.add($col1)
# Read the file
$text = $null
try {
$file = [System.io.File]::Open($path, 'Open', 'Read', 'None')
$reader = New-Object System.IO.StreamReader($file)
$a = $reader.ReadLine()
$reader.Close()
$file.Close()
} catch [Exception] { $text = $_.Exception.Message }
# Succeeded?
if($text -eq $null) {
# Yes, no error message
} else {
# Add Row
$row = $exMonResult.NewRow();
$row.Error = $text;
$exMonResult.Rows.Add($row)
} - Change the $path variable to the file to monitor
- Configure email settings and schedule as normal