Jump to content

dan0707

Members
  • Gesamte Inhalte

    3
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von dan0707

  1. Danke für eure Tips.

    Mein genialer Mitarbeiter konnte mir weiterhelfen.

     

    Für diejenigen die es interessiert:

     

    
    strComputer = "."
    
    strStandort = "XXX" 
    
    On Error Resume Next
    
    Const wbemFlagReturnImmediately = &h10
    Const wbemFlagForwardOnly = &h20
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    
    Set objExcel = CreateObject("Excel.Application") 
    Set objWorkbook = objExcel.Workbooks.Open ("C:\Printer.xls")
    intRow = 2
    
    Set objNewPort = objWMIService.get _
    ("Win32_TCPIPPrinterPort").SpawnInstance_
    
    Set objPrinter = objWMIService.Get _
    ("Win32_Printer").SpawnInstance_
    
    
    Set colPrinter = objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
    
    For Each objItem In colPrinter
    strExistPrinter = strExistPrinter & ";"& objItem.Name
    
    Next
    
    strExistPrinter = UCase(Trim(strExistPrinter)) 
    
    Do Until objExcel.Cells(intRow, 1).Value = ""
    strPrinterName = objExcel.Cells(intRow, 1).Value
    strPrinterPort = objExcel.Cells(intRow, 2).Value
    strPrinterType = objExcel.Cells(intRow, 3).Value
    bolNewprinter = False
    
    	Select Case strPrinterType
    
    		Case "HP" 
    			strPrintDriver = "#NAME DES TREIBERS#"
    		Case "Xerox"
    			strPrintDriver = "#NAME DES TREIBERS#"
    
    		End Select
    
    
    If InStr(1, strExistPrinter, UCase(Trim(strPrinterName ))) <= 1 Then
    	On Error Goto 0
    	bolNewprinter = True
    
    	objNewPort.HostAddress = strPrinterPort
    	objNewPort.Name = "IP_" & strPrinterPort
    	objNewPort.Protocol = 1  
    	objNewPort.PortNumber = "9100"
    	objNewPort.SNMPEnabled = False      
    	objNewPort.Put_ 
    
    	objPrinter.DriverName = strPrintDriver
    	objPrinter.PortName   = "IP_" & strPrinterPort
    	objPrinter.Name   = strPrinterName
    	objPrinter.DeviceID   = strPrinterName
    	objPrinter.Location = strStandort
    	objPrinter.Local = True
    	objPrinter.Shared = True
    	objPrinter.ShareName = strPrinterName
    	objPrinter.Published = True
    	objPrinter.Put_	
    
    	On Error Resume Next
    Else	
    	If bolNewprinter = False Then
    		fnChangePrinterSettings strPrinterName, strPrintDriver
    	End If
    End If
    
    
    intRow = intRow + 1
    Loop
    
    objWorkbook.Close
    objExcel.Quit
    
    
    
    Function fnChangePrinterSettings(strPrinterObjectName,strDriverName)
    	Set colInstalledPrinters =  objWMIService.ExecQuery ("Select * from Win32_Printer Where Name = '" & strPrinterObjectName & "'")
    For Each objInstPrinter In colInstalledPrinters
    
    	objInstPrinter.DriverName = strDriverName
    	objInstPrinter.Location = strStandort
    	objInstPrinter.Local = True
    	objInstPrinter.Shared = True
    	objInstPrinter.ShareName = strPrinterObjectName
    	objInstPrinter.Published = True
    	objInstPrinter.Put_
    
    Next	
    
    End Function
    
    

  2. Hallo zusammen

     

    Ich dachte mir, wenn man nicht weiter kommt, sollte man Leute fragen, die Ahnung haben. Deshalb bin ich in diesem Forum gelandet.

     

    Ich ackere mich seit Tagen durch dieses Scrip doch leider will es nicht wie ich.

     

    Eigentlich sollte es aus einer Excel-Datei (aus der ersten Spalte) die Druckernamen auslesen und diese mit den bereits installierten Druckern vergleichen.

    Bis jetzt soll das Script mir nur den Namen ausgeben falls er installiert ist oder nicht. Danach werde ich das Script noch etwas erweitern.

    Leider reagiert er kein bischen auf meinen if-Vergleich und gibt somit immer aus, dass es ein neuer Drucker ist, obwohl die Drucker installiert sind (Teilweise 1-3) :confused:

     

    Vieleicht kann mir ja von euch jemand weiterhelfen.

     

    Danke schon mal.

     

    Hier mein script:

     

    
    strComputer = "."
    
    Const wbemFlagReturnImmediately = &h10
    Const wbemFlagForwardOnly = &h20
    
    Set objExcel = CreateObject("Excel.Application") 
    Set objWorkbook = objExcel.Workbooks.Open ("c:\Printer.xls") 
    intRow = 2
    
      Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
      Set colPrinter = objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL", _
                                             wbemFlagReturnImmediately + wbemFlagForwardOnly)
    
    Dim strPrinterName, strPrinterType
    
    
    Do Until objExcel.Cells(intRow, 1).Value = ""
    
      For Each objItem In colPrinter
    
    	If Len(objExcel.Cells(intRow, 1)) >= 6 Then
    
    		WScript.Echo "-----------------------------------"
    		strPrinterName = objExcel.Cells(intRow, 1).Value
    		strPrinterPort = objExcel.Cells(intRow, 2).Value
    		strPrinterType = objExcel.Cells(intRow, 3).Value
    
    		Select Case strPrinterType
    
    		Case "HP" 
    			strPrintDriver = "HP Universal Printing PCL 5 (v5.1)"
    		Case "Xerox"
    			strPrintDriver = "Xerox Global Print Driver PS"
    
    		End Select
    
    WScript.Echo strPrintDriver
    	If LCase(objItem.Name) =  LCase(Trim(strPrinterName)) Then
    			WScript.Echo "Drucker installiert: " & strPrinterName
    			intRow = intRow + 1
    		Else
    			WScript.Echo "Neuer Drucker: " & strPrinterName
    			intRow = intRow + 1
    
    
    	End If
    	End If
    
    
      Next
    
    Loop
    objWorkbook.Close
    objExcel.Quit
    
    

    Printer.zip

×
×
  • Neu erstellen...