我正在尝试让 Powershell 脚本启动一个循环异步脚本块,然后执行一些“其他操作”。当“其他东西”在某个未知的时间完成时,我想停止/终止脚本块。
我看到了 MS dev network info在 stopasych()
方法,但无法弄清楚如何在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。
最佳答案
就像 Invoke()
有一个异步开始/结束对,Stop()
也是如此.
您可以像这样包装它们以停止调用:
$ps.EndStop($ps.BeginStop($null,$asyncObject))
关于powershell - 如何停止异步 PowerShell 脚本 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438756/