最后,如果您使用的是PowerShell2.0,那么-sta模式就足够了。原因是在STA模式下,默认的运行空间会为所有交互命令(以及脚本)重用一个线程。扎克在2月份研究的PowerShell版本的行为可能与当前PowerShell2.0的rc/rtm不同。它可能使用了usenewthread而不是当前的默认值reusethread:
PS> [System.Management.Automation.Runspaces.Runspace]::DefaultRunspace
Events : System.Management.Automation.PSLocalEventManager
ThreadOptions : ReuseThread
RunspaceConfiguration : System.Management.Automation.Runspaces.RunspaceConfigForSingleShell
InitialSessionState :
Version : 2.0
RunspaceStateInfo : Opened
RunspaceAvailability : Busy
ConnectionInfo :
ApartmentState : STA
InstanceId : 8d3bfae1-8b64-433d-9ab9-ce640b15f84f
SessionStateProxy : System.Management.Automation.Runspaces.SessionStateProxy
Debugger : System.Management.Automation.Debugger
总之,你在这里很好。他所说的高级技术很可能是如何使用reusethread旋转一个新的运行空间,因为这是-sta的默认线程选项,所以现在是多余的。但是,可以使用此技术在MTA模式下在单个线程上运行;-)
-奥辛
微软PowerShell MVP