各位前輩好,
小弟想要請教一個問題,我用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", "")
`
再煩請各位前輩指點指點。
此問題獲得已解決,解決方式如下
`#取得授權
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", "")
`
我有試過get-process,但只能取得peocess的資訊,好像無法寫判斷式來判斷是否存在。
沒有你指定的執行序就取不到啊,回傳值就不可能是那個執行序的資訊。
你知道powershell可以用if嗎?
謝謝大大指點,
已可成功判定,下方列出小弟的程式碼,分享給需要的朋友們。
感謝
#取得授權
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", "")
執行項目的地方為什麼需要用.NET方法 ?
用start-process -filepath 不行嗎 ?
能用Posh的地方就盡量用,除非不行才需要去用.NET
瞭解,沒特別需要用.net,我改一下,謝謝大大指點