iT邦幫忙

0

PowerShell 偵測執行程式,並重啟

各位前輩好,

小弟想要請教一個問題,我用powerShell實作了一個關閉與啟動執行檔的程式。
並安排在windows排程執行。
在關閉時,如果Client這支程式沒有開啟,
powershell會跳出錯誤,雖然最後結果不影嚮,但還是想請教大大們是否有更好的作法。

希望可以偵測這執行檔是否已在執行中才進行關閉。

`
Set-ExecutionPolicy RemoteSigned

#停止Client
Stop-Process -Name client

#等待1s
Start-Sleep -s 1

#執行項目
[System.Diagnostics.Process]::Start("C:\Client\client.exe", "")
`

https://ithelp.ithome.com.tw/upload/images/20180929/20111186IJm9PSRLue.png

再煩請各位前輩指點指點。

此問題獲得已解決,解決方式如下

`#取得授權
Set-ExecutionPolicy RemoteSigned

#判斷與停止Client
if(Get-Process client -ErrorAction SilentlyContinue)
{
    Stop-Process -Name client
}

#等待1s
Start-Sleep -s 1

#執行項目
[System.Diagnostics.Process]::Start("C:\Client\client.exe", "")
`

1 個回答

1
froce
iT邦大師 5 級 ‧ 2018-09-29 15:38:42
最佳解答
看更多先前的回應...收起先前的回應...
nrsjdje iT邦新手 5 級 ‧ 2018-09-29 16:16:32 檢舉

我有試過get-process,但只能取得peocess的資訊,好像無法寫判斷式來判斷是否存在。

froce iT邦大師 5 級 ‧ 2018-09-29 16:18:58 檢舉

沒有你指定的執行序就取不到啊,回傳值就不可能是那個執行序的資訊。
你知道powershell可以用if嗎?

nrsjdje iT邦新手 5 級 ‧ 2018-09-29 23:36:58 檢舉

謝謝大大指點,
已可成功判定,下方列出小弟的程式碼,分享給需要的朋友們。

感謝

#取得授權
Set-ExecutionPolicy RemoteSigned

#判斷與停止Client
if(Get-Process client -ErrorAction SilentlyContinue)
{
	Stop-Process -Name client
}

#等待1s
Start-Sleep -s 1

#執行項目
[System.Diagnostics.Process]::Start("C:\Client\client.exe", "")

lalelee iT邦新手 4 級 ‧ 2018-10-01 08:43:28 檢舉

執行項目的地方為什麼需要用.NET方法 ?
用start-process -filepath 不行嗎 ?

能用Posh的地方就盡量用,除非不行才需要去用.NET

nrsjdje iT邦新手 5 級 ‧ 2018-10-11 16:18:55 檢舉

瞭解,沒特別需要用.net,我改一下,謝謝大大指點

我要發表回答

立即登入回答