sharepoint - PowerShell STA模式是否可以消除SharePoint内存泄漏问题?

标签 sharepoint com powershell powershell-2.0

一些背景:

Zoji Rosenfield的

  • SharePoint+PowerShell is (Usually) a Perfect Match [MSFT]
  • 我的SharePoint+PowerShell Leak Workarounds
  • SO:Could you explain STA and MTA?

  • 简而言之,标准的SharePoint指导原则是,不应由COM支持的对象SPSiteSPWeb被不同的线程使用。在默认情况下,这与PowerShell在默认情况下使用MTA模式冲突,已在上面引用的“泄漏解决方法”帖子中进行了验证。建议的解决方法是尝试使用PowerShell 2.0的-STA标志,这似乎应该可以解决问题。但是,扎克(Zach)在他的评论中暗示STA模式是不够的。

    这 push 了我对COM知识的了解,因此我希望有人可以帮助我理解...
  • STA模式是否足以将对象访问限制为跨PowerShell管道的单个线程?
  • 如果没有,为什么?
  • 最佳答案

    最终,如果您使用的是Powershell 2.0,则-STA模式应该足够了。原因是在STA模式下,默认运行空间将单个线程重用于所有交互式命令(以及脚本)。 Zach在二月份查看的Powershell版本的行为可能与PowerShell 2.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模式下在单个线程上运行;-)

    -Oisin

    Microsoft PowerShell MVP

    关于sharepoint - PowerShell STA模式是否可以消除SharePoint内存泄漏问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508704/

    相关文章:

    sharepoint - SP2013 SharePoint 托管的应用程序模式对话框错误 : Cannot read 'hiddenButtonValueBeforeDialog'

    list - SharePoint 2013 - 要素架构包含错误的字段名称 : feature name = [GUID], 字段名称 [字段名称]

    azure - 无法切换到 Azure Function 经典体验

    arrays - PowerShell:将十六进制变量转换为单个(float32)大端变量

    sharepoint - 将 WSPBuilder 工具与 SharePoint 结合使用

    jquery - 日期比较在 sharepoint spservices 中不起作用

    c++ - 为连接点客户端提供 IDispatch 实现

    c# - mime 播放器 Activex 控件应该如何检索文档的路径?

    c++ - 传统DLL和COM DLL的区别

    Powershell - 文件已存在时的另存为功能