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