一些背景:

在短期、标准SharePoint的指导是,COM支持的对象 SPSiteSPWeb 不应使用不同的线。这是在冲突with advanced的使用MTA模式默认情况下,核实在泄漏的解决方法之后引用上。一个建议的解决方法是试图PowerShell2.0-STA标志,这看来似乎应该解决的问题;然而,在评论关于他的后Zach表明STA模式是不够的。

这推动边缘的我COM知识,所以我希望有人能帮助我明白...

  1. 应该STA模式足以保持对象访问局限于一个单一的线跨PowerShell管道?
  2. 如果不是,为什么?
有帮助吗?

解决方案

最终,STA模式应该能够提供您使用的是Powershell2.0。为此原因是,在STA模式,默认的运行空间使用一个单一的线的所有互动的命令(和脚本太)。它是可能的版本的语言,扎克看在二月份的表现不同,目前RC/题的安2.0.它可以使用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模式;-)

-Oisin

Microsoft PowerShell MVP

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top