打印机在活动目录环境下的Windows XP工作站分配

我正在使用以下脚本来处理从机器中删除任何旧的联网打印机,然后分配propper的,并使其中一个默认。 此脚本分配给工作站所在的OU,并使用组策略回送,因此所有login的用户都将获得为其映射的适当打印机。

我试图使用新的打印机pipe理器作为W2K3 R2的一部分,但是当这种方式分配默认时,我得到一个错误,打印机不存在,所以我回到使用脚本。

我注意到的一个缺陷是,它不会删除任何碰巧从RDP会话映射的打印机(我们在任何地方都看不到这个,但有几个位置)。 有没有什么办法来枚举所有的RDP打印机,并删除它们类似于我如何枚举和删除networking打印机?

' ' Printers.vbs - Windows Logon Script. ' RemovePrinters AddPrinters Sub RemovePrinters() On Error Resume Next Dim strPrinter Set objNetwork = WScript.CreateObject("WScript.Network") Set colPrinters = objNetwork.EnumPrinterConnections For i = 0 to colPrinters.Count -1 Step 2 strPrinter=CStr(colPrinters.Item(i+1)) If Not InStr(strPrinter,"\\") = 0 Then objNetwork.RemovePrinterConnection strPrinter, True, True End If Next End Sub Sub AddPrinters() On Error GoTo 0 Set objNetwork = CreateObject("WScript.Network") objNetwork.AddWindowsPrinterConnection "\\printers1\JH120-DELL5310" objNetwork.SetDefaultPrinter "\\printers1\Jh120-DELL5310" End Sub 

我用这个删除打印机似乎在所有情况下工作。

  Dim objNetwork, objPrinters Set objNetwork = CreateObject("WScript.Network") Set objPrinters = objNetwork.EnumPrinterConnections ' ### Delete selected network printer objNetwork.RemovePrinterConnection "\\GARCIA\Dell Printer 3100cn PS", True, True objNetwork.RemovePrinterConnection "\\HENDRIX\Dell Printer 3100cn PS", True, True objNetwork.RemovePrinterConnection "\\HENDRIX\Brother PCL5e Driver", True, True objNetwork.RemovePrinterConnection "\\HENDRIX\HP LaserJet 4250 PS", True, True objNetwork.RemovePrinterConnection "\\STANLEY\HP LaserJet 4250 PS", True, True 

我不确定操作系统是如何处理RDP打印机的,不pipe它是把它们当作“本地”打印机还是“networking”打印机。 如果打印机显示在HKLM \ System \ CurrentControlSet \ Control \ Print \ Printers下的registry中,则使用printui.dll删除打印机对象,如下所示:

rundll32 printui.dll,PrintUIEntry / dl / n“PRINTER NAME GOES HERES”

OTOH,如果打印机出现在HKCU \ Printers \ Connections的registry中,那么您使用的方法应该已经成功了。 也许有其他的东西阻止连接被删除? 脚本运行时用户是否连接到terminal服务器?