2011-08-05 94 views
1

我正在編寫一個Powershell腳本來完成一大堆事情,完成後它將作爲計劃任務運行。出於這個原因,我希望能夠在開始運行腳本時檢查舊實例是否仍然存在,並在舊腳本存在時將其殺死。監控powershell腳本掛起的實例

我想我會用這樣的:

$process = Get_Process | $name 
$process.kill 

但如何以簡單的方式$ name變量?

有沒有人有更好的建議? 最好的問候, Gísli

+2

你確定沒有辦法阻止腳本掛起嗎?我會專注於創建可靠的腳本,而不是訴諸於殺死進程。 – Rynant

+0

@Ryant - 當然我正在努力做到這一點,但我需要這個作爲我的應用程序的安全網,因爲它將在我無權訪問的服務器上運行。這只是爲了確保我不累積大量流程並消耗服務器資源。 – Gisli

回答

2

可以在計劃任務配置窗口做到這一點。這些設置取決於您正在使用的操作系統。

編輯:也就是說,你可以配置一段時間後(即當你的下一個開始時)被殺死的任務。

+0

謝謝。這可能是一個選擇,我必須與我的導師覈對。我正在重寫一個他用perl編寫的腳本,他在那裏有一個函數來殺死進程。這可能是因爲它必須在多個平臺上運行。 – Gisli

1

爲什麼你需要得到的名字? Get-Process返回高保真Process對象,您可以直接對其進行操作。

要獲得某個特定名稱的進程,請使用$n = Get-Process notepad,然後執行$n.kill()來殺死它。如果您確實需要再次檢查名稱,請執行$n.Name。要查看您可以使用的屬性和方法,嘗試$n | get-member

並確保您閱讀手冊:http://technet.microsoft.com/en-us/library/dd347630.aspx

+0

這沒有解決@ Gisli的問題。可能有多個PowerShell進程正在運行,腳本如何知道應該殺死哪一個?一個powershell.exe進程將用於腳本本身,一個可以是活動控制檯會話,另一個可以來自不同的任務等。 – Rynant

+0

@Rynant - 當然。我正在解決他關於get-process的具體問題。幫助他找到解決方案。 stackoverflow的目的不是爲了讓OP能夠完成整個事情。 – manojlds

+0

@manojlds感謝提示 – Gisli