不PowerShell STA模式消除SharePoint存泄漏的问题?
-
19-09-2019 - |
题
一些背景:
- SharePoint+directory域服务对象(或属性(通常)一个完美的比赛 通过扎克罗森菲尔德[微软]
- SharePoint+PowerShell泄漏的解决方法 我
- 所以: 你能解释一下STA和MTA?
在短期、标准SharePoint的指导是,COM支持的对象 SPSite
和 SPWeb
不应使用不同的线。这是在冲突with advanced的使用MTA模式默认情况下,核实在泄漏的解决方法之后引用上。一个建议的解决方法是试图PowerShell2.0-STA标志,这看来似乎应该解决的问题;然而,在评论关于他的后Zach表明STA模式是不够的。
这推动边缘的我COM知识,所以我希望有人能帮助我明白...
- 应该STA模式足以保持对象访问局限于一个单一的线跨PowerShell管道?
- 如果不是,为什么?
解决方案
最终,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
不隶属于 StackOverflow