Frage

Einige Hintergrundinformationen:

Kurz gesagt, Sharepoint-Standardführung ist, dass COM-backed Objekte wie SPSite und SPWeb sollen nicht von verschiedenen Threads verwendet werden. Dies steht in Konflikt mit Powershell Verwendung von MTA-Modus standardmäßig in der Zeit nach oben referenzierten Leak Umgehungen verifiziert. Eine vorgeschlagene Abhilfe war zu Powershell 2.0 ist -STA Flagge zu versuchen, die wie es scheint, sollte das Problem zu lösen; jedoch in den Kommentaren auf seinem Posten Zach schlägt STA-Modus ist nicht genug.

Dies drückt auf den Rand meines COM Wissen, so dass ich bin der Hoffnung, jemand kann mir helfen, zu verstehen ...

  1. Sollte STA-Modus ausreichend sein, Objektzugriff beschränkt sich auf einen einzelnen Thread zu halten über Powershell-Pipelines?
  2. Wenn nicht, warum?
War es hilfreich?

Lösung

Letztlich sollte -STA Modus genug sein, um vorausgesetzt, Sie verwenden Powershell 2.0. Der Grund dafür ist, dass in STA-Modus, der Standard Runspace für alle interaktiven Befehle einen einzelnen Thread wieder verwendet (und Skripte auch). Es ist möglich, dass die Version von Powershell, die Zach wurde anders in Februar suchen verhielten sich, dass die aktuelle RC / RTM von Powershell 2.0. Es kann UseNewThread anstelle des aktuellen Standard verwendet, 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

Also kurz gesagt, du bist hier richtig. Die hoch entwickelte Technik, die er sprach, war höchstwahrscheinlich, wie eine neue Runspace mit ReUseThread spin up, die nun überflüssig ist, da dies die Standard-Thread-Option für -STA ist. Sie könnten jedoch diese Technik auf einem einzigen Thread in MTA-Modus ausgeführt; -)

-Oisin

Microsoft Powershell MVP

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top