添加打印机VBS脚本SWbemObjectEx访问被拒绝

当在本地计算机上以pipe理员身份运行脚本时,脚本运行正常,但是通过GPO作为启动脚本部署时,会从SWbemObjectEx.put_获取“拒绝访问”。 这是整个脚本:

strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") On Error Resume Next ''--- in case the driver is already there REM *** Installs printer driver needed for Universal PS 64 Bit Set objDriver = objWMIService.Get("Win32_PrinterDriver") objDriver.Name = "HP Universal Printing PS" objDriver.FilePath = "\\share$\Drivers\Printers\HP\HP-Universal\x64\" objDriver.InfName = "\\share$\Drivers\Printers\HP\HP-Universal\x64\hpcu155v.inf" objDriver.SupportedPlatform = "Windows NT x64" objDriver.Version = "3" errResult = objDriver.AddPrinterDriver(objDriver) rem *** Installs a TCP/IP printer local port on a computer Set objNewPort = objWMIService.Get _ ("Win32_TCPIPPrinterPort").SpawnInstance_ objNewPort.Name = "IP_172.17.87.226" objNewPort.Protocol = 1 objNewPort.HostAddress = "172.17.87.226" objNewPort.PortNumber = "9100" objNewPort.SNMPCommunity = "public" objNewPort.SNMPEnabled = False objNewPort.Put_ rem *** installs printer Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_ objPrinter.DriverName = "HP Universal Printing PS" objPrinter.PortName = "IP_172.17.87.226" objPrinter.DeviceID = "HP LaserJet P2055dn in TPCS-400" objPrinter.Shared = False objPrinter.Location = "TPCS-400" objPrinter.Put_ 

我使用脚本的第二个版本通过添加自由的条目进行debugging,如下所示:

 writeLineToLog("addPrinterDriver errResult=" & errResult) If Err.Number <> 0 Then writeLineToLog("Error: " & Err.Number) 'writeLineToLog("Error (Hex): " & Hex(Err.Number)) writeLineToLog("Source: " & Err.Source) writeLineToLog("Description: " & Err.Description) Err.Clear End If 

另一个确定当前用户,这里是debugging的输出:

 starting script at 2/16/2017 2:41:29 PM addPrinterDriver errResult=0 after Installs a TCP/IP printer local port on a computer The current user is SYSTEM after Set objPrinter after objPrinter.DriverName = after objPrinter.PortName = after objPrinter.DeviceID = after objPrinter.Shared = after objPrinter.Location= after objPrinter.Put_ after Installs printer Error: -2147217405 Source: SWbemObjectEx Description: Access denied 

当最后一个put_被尝试时,错误即将到来。

这是用户还是计算机GPO策略? 我怀疑如果是用户,实际用户可能没有权限添加打印机。

您可以尝试从MSDN的博客中按照本指南来授予用户访问权限。 虽然我个人build议你通过GPO内置的函数部署打印机,你可以在这里find一个指南 。