关于Powershell register-objectevent动作

时间:2013-11-06 05:54:36

标签: powershell

PowerShell register-objectevent动作块是按顺序执行的吗?

例如:

Register-ObjectEvent -InputObject $someObject -EventName SomeEvent -Action { 
Write-Host  "start process"; 
#some time taking process;
Write-Host "end process";
}

如果有几个“SomeEvent”事件一起被解雇。动作块是顺序执行还是并行执行?如果它是并行的,如何使它顺序?

1 个答案:

答案 0 :(得分:5)

它们按顺序执行,并且仅在PowerShell引擎认为安全时执行。在那些时候,PowerShell将查看事件队列,使事件出列并执行其Action脚本块。 IIRC,PowerShell在循环的迭代之间检查,也可能在管道的各个阶段之间进行检查。最重要的是,当事件发生异步时,在事件触发的任何线程上,PowerShell立即响应的唯一事情就是对事件进行排队。稍后,PowerShell将从队列中排除事件并以不会导致当前正在执行的管道出现线程问题的方式执行它们。