2

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

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

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

在此处输入图像描述

4

1 回答 1

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)
于 2012-06-05T16:48:28.767 回答