我正在尝试从PowerShell中检索打印队列列表,如下所示。 但我得到了
The calling thread cannot access this object because a different thread owns it
。
是否会发生因为PowerShell无法支持多个线程?
有没有办法解决这个问题?
答案 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)