调用线程无法访问此对象,因为另一个线程拥有它

时间:2012-06-05 15:59:57

标签: multithreading powershell printing

我正在尝试从PowerShell中检索打印队列列表,如下所示。 但我得到了

The calling thread cannot access this object because a different thread owns it

是否会发生因为PowerShell无法支持多个线程?
有没有办法解决这个问题?

enter image description here

1 个答案:

答案 0 :(得分:3)

据我了解,您必须使用-STA(单线程分区)参数启动PowerShell才能使代码正常工作:

PowerShell -STA
Add-Type -AssemblyName  "system.Printing"
$f = @([system.Printing.EnumeratedPrintQueueTypes]::local, [system.Printing.EnumeratedPrintQueueTypes]::shared)
$ps = New-Object system.Printing.localprintserver
$pq = $ps.GetPrintQueues($f)