Ankündigung

Einklappen
Keine Ankündigung bisher.

Printer Migration per VB script

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Printer Migration per VB script

    Hallo Ihr super Proger
    Ich hab da ein kleines Problem!
    Ich bräuchte ein VB- Script welches auf einem Client den Netzwerkdruckern eine neuen Server in die Adresse einpflanzt.
    Hat jemand etwas solches oder kann mir jemand helfen?
    Grüsschen

    Päddu

  • #2
    Ein fertiges Script kann ich dir nicht liefern, jedoch einen Ansatz: http://www.winguides.com/scripting/reference.php?id=108

    1. Mit der EnumPrinterConnections-Methode alle Printer durchlaufen und ggf. mit neuer Serverbezeichnung anlegen
    2. Falls das Anlegen geklappt hat alte Connection zum Server beenden.

    Sollte theoretisch alles mit dem WScript.Network-Objekt funktionieren, gebraucht habe ich es allerdings noch nie. Mit den Beispielen unter dem angegebenen Link sollte es aber zu schaffen sein.

    Gruss Michi

    Kommentar


    • #3
      Hab da was zusammengestiefelt! Es funktioniert aber noch nicht Richtig!! Kannst du dir das schnell ankucken?

      *********************************************


      strComputer = "."
      Set objWMIService = GetObject("winmgmts:" _
      & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
      Set colInstalledPrinters = objWMIService.ExecQuery _
      ("Select * from Win32_Printer")
      For Each objPrinter in colInstalledPrinters

      '*********** Findet alle Netzwerkdrucker (ignoriert alle lokalen Drucker) ***************************
      If left(objPrinter.Name,2) = "\\" then

      OldPrintArray = Split(Mid(objPrinter.Name,3,Len(objPrinter.Name)), "\")

      Msg = msg & "Server: " & OldPrintArray(0) & vbcr
      Msg = msg & "Printer: " & OldPrintArray(1) & vbcr & vbcr

      Set WshNetwork = CreateObject("WScript.Network")
      WshNetwork.AddWindowsPrinterConnection "\\newprintserver\"&OldPrintArray(1)

      Set objNetwork = WScript.CreateObject("WScript.Network")
      objNetwork.RemovePrinterConnection "\\oldprintserver\"&OldPrintArray(1)


      End If
      Next
      msgbox msg

      ************************************************** **

      Kommentar


      • #4
        Also das Script ohne den Abschnitt PrinterConnections funktioniert bei mir WXP SP1. Der Teil mit den Connections kann (darf) ich nicht testen. Was mir aber auffällt, ist dass du vor und nach dem "&" kein Leerzeichen hast. Möglicherweise stellt das ein Problem dar.
        Poste doch mal den genauen Wortlaut des Fehlers.

        Gruss Michi

        Kommentar


        • #5
          Fehler: Der Druckername ist unzulässig
          Code: 80070709
          Quelle: (null)

          Ausserdem, muss ich das ganze so anpassen, dass der Server überprüft wird auf dem der Drucker ist (also nur Drucker eines Spezifischen Printservers) und dies mit Argumenten angegeben wird (Sowohl Ziel- als auch Destinationserver)

          Und eventuel ein Eventlog eintrag generiert wird wiviele Drucker migriert wurden!
          Zuletzt geändert von IT-Bear; 16.11.2004, 11:34.

          Kommentar


          • #6
            Stimmen die Servernamen? Kannst zu manuell zu den Servern\Druckern connecten?

            Du kannst ja mit einem weiteren
            Code:
            If Printer.name = "\\MyPrinter" then
            ...
            end if
            die Mirgation auf einen Server einschränken.

            Zum Eventlog: http://msdn.microsoft.com/library/de...thlogevent.asp

            Gruss Michi

            Kommentar


            • #7
              So an alle Oberscripter un ProgrammierAsse
              geht diese code auf und sollte Er funktionieren oder hat es Fehler drin? Bitte um Hilfe!

              '************* Error Abfangen ***********************
              On error resume next

              '************* Variabel Definition *******************

              Option Explicit
              Dim Oldserver
              Dim NewServer

              '******************** Objekt Sets *********************

              strComputer = "."
              Set objWMIService = GetObject("winmgmts:" _
              & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
              Set colInstalledPrinters = objWMIService.ExecQuery _
              ("Select * from Win32_Printer")
              Set WshNetwork = CreateObject("WScript.Network")
              Set objNetwork = WScript.CreateObject("WScript.Network")

              '******************** Eingeben der Server ***************

              Set OldServer = \\ares ' Alter Printserver
              Set NewServer = \\zeus ' Neuer Printserver


              For Each objPrinter in colInstalledPrinters

              '*********** Findet alle Netzwerkdrucker (ignoriert alle lokalen Drucker) ***************************

              If left(objPrinter.Name,2) = "\\" then

              If OldPrinterArray(0) = OldServer then

              OldPrintArray = Split(Mid(objPrinter.Name,3,Len(objPrinter.Name)), "\")

              Msg = msg & "Server: " & OldPrintArray(0) & vbcr
              Msg = msg & "Printer: " & OldPrintArray(1) & vbcr & vbcr


              WshNetwork.AddWindowsPrinterConnection NewServer & "\" & OldPrintArray(1)
              objNetwork.RemovePrinterConnection OldServer & "\" & OldPrintArray(1)

              End If
              End If
              Next
              msgbox msg
              Zuletzt geändert von IT-Bear; 16.11.2004, 15:32.

              Kommentar


              • #8
                AW: Printer Migration per VB script

                Hallo!

                Sag mal, hasst du mittlerweile ein funktionierendes Script?

                Ich suche ein Script welches mir alle Netzwerk-Drucker Verbindungen zu einem bestimmten Server (Alten Print-Server) trennt. Aber die Neuen Verbindungen natürlich nicht anfasst...

                wäre dankbar für ein Hinweis ob du da irgendwie weiter gekommen bist.

                Kommentar

                Lädt...
                X