iT邦幫忙

0

關於Powershell 監測「Win10 PID」

  • 分享至 

  • xImage

很感謝,[#johncoc],協助我解決
關於Powershell 取得「Win10 應用程序 PID」 (感謝 johncoc 協助解決) 的問題

原先我想取得PID的目的是

判斷使用者開啟某些網頁,這邊先以Google為例

當使用者開啟Google後,開啟指定應用程式,取得PID,然後利用Win10排程,定時去偵測這個PID是否存活。

當使用者關閉Google網頁後,判定PID已經消失,則把指定應用程式關閉
↑ 這是可行的。

但昨天我就在想,想了一天,有沒有什麼方法,可以把監測這功能也寫在PowerShell裡面,就像Ping一樣

已經嘗試過的方式有

  1. 無限迴圈
$PIDNu = Get-Process msedge| Where-Object { $_.MainWindowTitle -like '*Google*' } | Select Id

For (;;) {
  If ($PIDNu.Id -lt 0) {
    Stop-Process -Name chtnode -Force
    Break
  }

這沒辦法判斷成功

  1. 使用 netstat -ano

但似乎沒有可以一直監測的效果

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2022-11-15 10:17:49 檢舉
你這到底要幹嘛?講一下情景說不定能給你更好的建議。
要管控網頁弄台防火牆直接擋就好,怎樣都比這樣做好多了。

ps.
你在無窮迴圈裡面沒重新獲取PID當然不會有效。
踏雪尋梅 iT邦研究生 5 級 ‧ 2022-11-15 10:21:57 檢舉
哦哦,其實事情很簡單啦

就是讓使用者開啟RDS的時候,自動首頁連結到政府的網頁,然後順勢啟動Hicos,當使用者關閉該網頁(RDS)後,腳本要判斷順便把Hicos關掉 這樣
踏雪尋梅 iT邦研究生 5 級 ‧ 2022-11-15 10:22:53 檢舉
整體都有完成了,只是在想有沒有更優解@@
froce iT邦大師 1 級 ‧ 2022-11-15 10:29:04 檢舉
HICOS一般來說沒必要這樣關掉service吧...
你用POWERSHELL做無窮迴圈的資源消耗應該比hicos的資源消耗來的大。

附帶一提,這種的話我會在本機上做個web socket server,讓網頁連上,斷掉就關掉對應的service。
踏雪尋梅 iT邦研究生 5 級 ‧ 2022-11-15 10:38:55 檢舉
web socket server .. 我來Try Try,謝啦:D
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
nwm310
iT邦新手 3 級 ‧ 2022-11-15 21:33:27
最佳解答
# 多個分頁的時候,切換到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

nwm310 iT邦新手 3 級 ‧ 2022-11-16 07:30:13 檢舉

補充:
#在-action裡面設值,用$global:result

防止PowerShell關閉

while ($true){
sleep 5
$global:result
}

我要發表回答

立即登入回答