4
我想要一個Powershell腳本啓動一個循環異步腳本塊,然後做一些「其他的東西」。當其他東西在某些未知的時間完成時,我想停止/終止腳本塊。如何停止異步PowerShell腳本塊?
我在stopasych()
方法上看到MS dev network info方法,但無法弄清楚如何在Powershell中應用它。
一個簡單的例子:
$runspace = [runspacefactory]::CreateRunspace()
$ps = [powershell]::create()
$ps.runspace = $runspace
[void]$ps.addscript({
$beep = "`a"
for ($i = 1; $i -lt 5000; $i++) {
$beep
Start-Sleep -Seconds 10
}
})
$runspace.open()
$asyncObject = $ps.beginInvoke()
Copy-Item "c:\bigdata" "\\server\share"
這讓我開始,但是當複製完成後,我要殺死的蜂鳴聲。我不能反轉這些(即在後臺執行「複製」),因爲直到條件$ps.InvocationStateInfo.state
再次被選中,纔會有延遲。
任何人都可以幫忙嗎?順便說一句,我想堅持PoSh v2。
'$ ps.dispose()'? – BenH
@ BenH Doh!男孩,我感到愚蠢。我知道在完成時使用'.dispose()',但我沒有意識到它會阻止這個過程。謝謝。 – Teknowledgist