我正在编写一个脚本,将网络打印机设置为分配给计算机的全局打印机,这样当新用户登录时,他们就不必手动添加打印机了。我正在使用命令rundll32 printui PrintUIEntry。因此,我们将让技术人员转向每台计算机(作为计算机上的管理员),他们将运行此脚本。弹出框将出现,他们将输入打印机名称,确定它运行rundll32命令。我们有2台打印机服务器“vps01”和“vps02”,因此该命令将运行两次以查找打印机。我遇到错误处理问题。我不知道从哪里开始。我尝试设置错误处理,但我知道这是错误的。我有这个命令的方式运行,但如果我输入一个无效的打印机名称,它仍然说添加了打印机。非常感谢任何帮助。
Dim objNet, strPrinter
Set objNet = CreateObject("Wscript.Network")
strPrinter = InputBox("Please enter the name of the Printer you'd like to add", "Add Printer", "eg. printer name")
Set objShell = CreateObject("WScript.Shell")
arrServers = Array("vps01","vps02")
For Each strServer In arrServers
strCommand = "cmd /c rundll32 printui.dll,PrintUIEntry /ga /n\\" & strServer & "\" & strPrinter
objShell.Run strCommand, 1, True
next
If err.number = 0 Then
Wscript.Echo strPrinter & " added!"
Else
Wscript.Echo "Uh oh - there seems to be a problem! Error Code : " & err.number & " Error Description: " & err.description
End If
答案 0 :(得分:1)
Err.Number只会向您显示代码或COM组件中的错误,但看起来您正在尝试运行命令然后读取输出。
我认为你可以采取几种方法:
objShell.Run
的返回值(类似于result = objShell.Run(strCommand, 1, True)
,那么您可以看到该命令是否返回成功。我不确定您是否会总是得到一个成功,因为您运行的命令是cmd
,并且它可能会成功运行您告诉它的命令。您可以直接运行rundll32
而不是通过{{1}运行它}。.Exec
,而不是使用cmd
方法。您可以解析它以查找您正在寻找的成功和失败消息。AddWindowsPrinterConnection
的登录脚本可以满足您的需求,而不是系统网络打印机连接?)这可能比它的价值更麻烦,特别是如果你还不熟悉WMI的快速安装脚本,但它可能是更正确的做事方式,它可以让你更直接地处理任何错误,可能是通过使用你想要做的Err.Number技术。