,以下腳本適用於windows域環境中,用於主機自動添加域中的共享打印機。將文本存儲爲vbs格式即可使用。 ' 添加網絡打印機的腳本v4 ' 陳濤 [email protected] 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.UserName Set objUser = GetObject("LDAP://" & strUser) strAdsPath=objUser.AdsPath strOUName = "LDAP://" & Mid(strAdsPath, InStr(strAdsPath,",")+1) ' 得到用戶所在OU的打印機 Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCOmmand.ActiveConnection = objConnection objCommand.CommandText = "Select printerName, serverName from " _ & "'" & strOUName & "' where objectClass='printQueue'" objCommand.Properties("Page Size") = 1000 objCommand.Properties("Timeout") = 30 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.Properties("Cache Results") = False Set objRecordSet = objCommand.Execute Dim 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 Do Loop ' loop through printer connections Dim WshNetwork Set WshNetwork = WScript.CreateObject("WScript.Network") Dim WSHPrinters, LOOP_COUNTER Set WSHPrinters = WSHNetwork.EnumPrinterConnections If WSHPrinters.Count= 0 Then ' 如果沒有任何不存在任何打印機,則直接添加 For Each PrinterPath In objDictPrnts.Keys 'WScript.Echo "11111Connecting to printer: " & PrinterPath WSHNetwork.AddWindowsPrinterConnection PrinterPath Next Else For LOOP_COUNTER = 0 To WSHPrinters.Count - 1 Step 2 Dim PrinterPath PrinterPath = WSHPrinters.Item(LOOP_COUNTER +1) If objDictPrnts.Exists(PrinterPath) Then ' 如果此添加存在,即退出 'WScript.Echo "Printer already Exists, removing from connect to list.: " &_ 'vbCrLf & PrinterPath & vbCrLf Exit For Else For Each PrinterPath In objDictPrnts.Keys WScript.Echo "22222Connecting to printer: " & PrinterPath WSHNetwork.AddWindowsPrinterConnection PrinterPath Next End If Next End If
通過組策略添加網絡打印機的腳本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.