[PowerShell]檢查相關程式是否有正常執行

練習 PowerShell 相關語法 , 使用 Select-Object 和 Start-Process 

最近遇到一個案例,一個使用者的環境不知道是安裝了甚麼樣的監控程式,不定時會把我們正常運行的作業給關閉,造成使用上的困擾。

但因為使用者的那個電腦上已經安裝一堆程式,如果要貿然清除,勢必又會有些紛爭,因此就手動寫一個 PowerShell 的 Script , 放在使用者的電腦讓,利用 Task Manager 定時去執行,因此把相關語法整理一下,後續要使用才不會又忘記了。

<#
Name : CheckAppIfNotRunning 
用來檢查相關路徑下的程式是否有執行,如果沒有執行則呼叫該作業
#>
function CheckAppIfNotRunning {
    param($Path)

    $ap = Get-Process -ErrorAction SilentlyContinue | Select-Object Name, Path | Where {$_.Path -eq $Path } 


    if ($ap){
        Write-Output "Run OK , So nothing"
    }else
    {
        Start-Process -FilePath $Path
    }
}


# 呼叫函數檢查 , 如果同時有多個需要判斷 , 則重複呼叫該函數多次

CheckAppIfNotRunning -Path 'C:\Temp\CheckOracle_x64.exe'
CheckAppIfNotRunning -Path 'D:\Temp\CheckOracle_x64.exe'