我有一位用户在她登录我们的终端服务器时想让本地桌面打印机成为默认打印机。我已经创建了一个简单的登录脚本此将默认打印机设置为更改名称的打印机
Set WSHNetwork = CreateObject("WScript.Network")
WSHNetwork.SetDefaultPrinter "HP LaserJet 6P (redirected 3)"
这里的问题是,无论出于何种原因,打印机名称不断变化的最后一位。 的HP LaserJet 6P(重定向),的HP LaserJet 6P(重定向2),和的HP LaserJet 6P(重定向1)是打印机中的显示方式的例子。
我不知道VBScript足以解释这些变化,并希望有人能帮助我找到正在使用的名称的变体,并将其设置为默认打印机。
我发现了一个可能有帮助的代码片段,但我不确定如何正确实现它。
Function printerExists(str)
printerExists = False
Dim objWMIService
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Dim colPrinters
Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")
Dim objPrinter
For Each objPrinter In colPrinters
If objPrinter.Name = str Then
printerExists = True
Exit For
End If
Next
End Function
我建议修复名称更改而不是试图解决它。 –
我已经看过,但显然客户端打印机是动态添加到终端服务器。因此,取决于通过RDP会话连接到终端服务器的其他本地打印机的数量决定了打印机重命名的内容。除了分享她的打印机,然后将其添加到终端服务器,然后将共享设置为她的默认值(然后不应该改变),我找不到任何其他方法。实际上这可能是比此登录脚本更好的解决方案。嗯... – Josh