很感謝,[#johncoc],協助我解決
關於Powershell 取得「Win10 應用程序 PID」 (感謝 johncoc 協助解決) 的問題
原先我想取得PID的目的是
判斷使用者開啟某些網頁,這邊先以Google為例
當使用者開啟Google後,開啟指定應用程式,取得PID,然後利用Win10排程,定時去偵測這個PID是否存活。
當使用者關閉Google網頁後,判定PID已經消失,則把指定應用程式關閉
↑ 這是可行的。
但昨天我就在想,想了一天,有沒有什麼方法,可以把監測這功能也寫在PowerShell裡面,就像Ping
一樣
已經嘗試過的方式有
$PIDNu = Get-Process msedge| Where-Object { $_.MainWindowTitle -like '*Google*' } | Select Id
For (;;) {
If ($PIDNu.Id -lt 0) {
Stop-Process -Name chtnode -Force
Break
}
這沒辦法判斷成功
netstat -ano
但似乎沒有可以一直監測的效果
# 多個分頁的時候,切換到Google分頁時才有效
$p = Get-Process msedge| Where-Object { $_.MainWindowTitle -like '*Google*' }
# 關掉所有分頁,才會開始動作
Register-ObjectEvent -InputObject $p -EventName Exited -Action { write-host '關閉所有分頁了' }
參考資料:
Handling Events with PowerShell and .NET (Part 1) | ScriptRunner