,以下脚本适用于windows域环境中,用于主机自动添加域中的共享打印机。将文本存储为vbs格式即可使用。' 添加网络打印机的脚本v4' 陈涛 mcp@371.net 2008/10/27 15:54:54' http://msdn.microsoft.com/en-us/library/aa394363(VS.85).aspx'****************************************************'*  脚本名:     AddADPrinters.vbs'*  编写:  陈涛'*  日期:       2008/10/28 22:15:54'*  版本:    4 '*  '*  描述:'*  1. 首先判断当前用户使用计算机所OU名,然后查看该OU中有无发布的打印机,得到一个打印机的清单'*  2. 然后,对本机已经安装的打印机进行枚举,也得到一份打印机的清单'*  3. 对比这两份清单,只安装在本地没有的打印机'****************************************************On Error Resume Next  ' 得到用户的信息Set objSysInfo = CreateObject("ADSystemInfo")strUser = objSysInfo.UserNameSet objUser = GetObject("LDAP://" & strUser)strAdsPath=objUser.AdsPathstrOUName = "LDAP://" &  Mid(strAdsPath, InStr(strAdsPath,",")+1)' 得到用户所在OU的打印机Const ADS_SCOPE_SUBTREE = 2Set objConnection = CreateObject("ADODB.Connection")Set objCommand =   CreateObject("ADODB.Command")objConnection.Provider = "ADsDSOObject"objConnection.Open "Active Directory Provider"Set objCOmmand.ActiveConnection = objConnectionobjCommand.CommandText = "Select printerName, serverName from " _    & "'" & strOUName & "'  where objectClass='printQueue'"objCommand.Properties("Page Size") = 1000objCommand.Properties("Timeout") = 30 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.Properties("Cache Results") = False Set objRecordSet = objCommand.ExecuteDim objDictPrnts: Set objDictPrnts = CreateObject("Scripting.Dictionary")objDictPrnts.CompareMode = vbTextCompare' 添加到一个字典中Do Until objRecordSet.EOF    'Wscript.Echo "Printer Name: " & objRecordSet.Fields("printerName").Value    'Wscript.Echo "Server Name: " & objRecordSet.Fields("serverName").Value    objDictPrnts.Add "\\" & objRecordSet.Fields("serverName").Value &_        "\" & objRecordSet.Fields("printerName").Value, _        UCase(objRecordSet.Fields("printerName").Value)'        WScript.Echo "Found Printer: " & objRecordSet.Fields("printerName").Value        '只取第一个    'objRecordSet.MoveNext    Exit DoLoop' loop through printer connectionsDim WshNetworkSet WshNetwork = WScript.CreateObject("WScript.Network")Dim WSHPrinters, LOOP_COUNTERSet WSHPrinters = WSHNetwork.EnumPrinterConnectionsIf WSHPrinters.Count= 0 Then' 如果没有任何不存在任何打印机,则直接添加For Each PrinterPath In objDictPrnts.Keys'WScript.Echo "11111Connecting to printer: " & PrinterPathWSHNetwork.AddWindowsPrinterConnection PrinterPathNextElseFor LOOP_COUNTER = 0 To WSHPrinters.Count - 1 Step 2Dim PrinterPathPrinterPath = WSHPrinters.Item(LOOP_COUNTER +1)If objDictPrnts.Exists(PrinterPath) Then     ' 如果此添加存在,即退出    'WScript.Echo "Printer already Exists, removing from connect to list.: " &_    'vbCrLf & PrinterPath & vbCrLf    Exit ForElseFor Each PrinterPath In objDictPrnts.KeysWScript.Echo "22222Connecting to printer: " & PrinterPathWSHNetwork.AddWindowsPrinterConnection PrinterPathNextEnd IfNextEnd If