Powershell win32_打印机访问被拒绝的解决方法

Powershell win32_打印机访问被拒绝的解决方法,powershell,printing,Powershell,Printing,我正在为windows 7编写powershell脚本,以替换用户桌面上的一些打印机连接,并且我需要能够获取windows打印服务器上的打印队列列表。除了浏览、连接和打印到打印队列之外,我无法访问打印服务器 问题:使用get-wmiobject通过win32_打印机在服务器上查询列表时,访问被拒绝 PS M:>获取WmiObject-类Win32_打印机-计算机名称newprintservername 获取WmiObject:访问被拒绝。(HRESULT异常:0x80070005(E_访问被拒绝

我正在为windows 7编写powershell脚本,以替换用户桌面上的一些打印机连接,并且我需要能够获取windows打印服务器上的打印队列列表。除了浏览、连接和打印到打印队列之外,我无法访问打印服务器

问题:使用get-wmiobject通过win32_打印机在服务器上查询列表时,访问被拒绝

PS M:>获取WmiObject-类Win32_打印机-计算机名称newprintservername

获取WmiObject:访问被拒绝。(HRESULT异常:0x80070005(E_访问被拒绝)) 第1行字符:14
+获取WmiObject您可能需要提升计算机的权限才能查询WMI。请尝试使用对该计算机具有管理员权限的凭据运行命令,并查看运行情况

获取WmiObject-类Win32_打印机-计算机名newprintservername-凭据(获取凭据)

或者,如果您无法在该计算机上获得管理员权限,您可能希望与设置非管理员以查询WMI-的人一起查看此博客文章

至少,它可以帮助你找到正确的方向


干杯,

出于某种原因,我很难找到它,但我知道它必须存在:用于打印服务器、打印机、打印队列等的.Net类。这是我发现的

链接到演示如何加载.DLL以访问类的脚本:

以下是我使用的(我有一个64位操作系统):

然后我补充说:

$PrintServer = [System.Printing.PrintServer]"\\ServerName"
try{
    $PrintQueue = $PrintServer.GetPrintQueue("PrintQueueName")
}
Catch{
    "Print Queue Not Found"
}
我用一个有效的打印队列进行了尝试,当我查看
$PrintQueue
时,可以查看队列信息,当我尝试一个无效的打印队列时,它的响应是“未找到打印队列”

这足以让你完成你需要的工作吗

$PrintServer = [System.Printing.PrintServer]"\\ServerName"
try{
    $PrintQueue = $PrintServer.GetPrintQueue("PrintQueueName")
}
Catch{
    "Print Queue Not Found"
}