Jump to content

PrintMigrator31


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

gibt es irgendeinen Trick, mit dem ich das PrintMigrator31 für einen User anwenden kann, der nicht Administrator-Rechte besitzt?

 

mit runas und Administrator-Daten funktioniert es nicht.

 

Müßte mit Druckern von altem auf neuen Druckserver umziehen und möchte nicht bei 60 Usern alle Drucker wieder komplett einrichten

 

vielleicht hat jemand eine geniale Lösung??

 

gruss

 

Evi

Link zu diesem Kommentar

Wenn es ein Printserver ist, dann einfach alles sichern, auf dem neuen wieder retour. Jetzt kannst Du den Server auch umbennen, die User können evtl. 5 Minuten nicht drucken. Bei mir hat die Umstellung in der Mittagspause ca. 15 Minuten gedauert, komplett.

 

Oder suchst Du sowas hier: Druckservermigration auf Clientseite - faq-o-matic.net

Link zu diesem Kommentar

Hallo,

 

es handelt sich wirklich um die Clients, den Serverumzug hab ich mit Printmigrator durchgeführt, lief wunderbar.

Dieses Tool läuft aber nur, wenn man als Administrator unterwegs ist, ein User im Netzwerk hat diese Rechte hier nicht. Auch wenn ich als lokaler Administrator ausführen will hab ich nicht den gewünschten Erfolg.

 

Den Artikel hab ich mal durchgesehen - ist eine interessante Geschichte, da ich aber je Abteilung und auch hier wieder teilweise nicht einheitlich Drucker im Netz und lokale Drucker hab, ist das Script dann auch diverse Male zu ändern.

 

Perfekt wäre es, wenn ich das Migrationstool irgendwie mit dem User zum Laufen bekäme - hab es auch schon mit dem RunAs von Steel versucht, auch ohne Erfolg.

 

gruss

 

evi

Link zu diesem Kommentar

Hi!

 

Ich habe den PrintMigrator nicht dazu benutzen können um die Drucker auf den Clients von dem alten auf den neuen Printserver umzuziehen. Ich habe mir daher ein kleines Skript zusammengeschustert.

 

Vorraussetzung:

1) Die Drucker sind unter dem gleichen Namen freigegeben, wie vorher.

2) Die Drucker sind bereits installiert

3) Du willst einfach alle Drucker von einem Server auf den anderen umziehen.

 

Vorgehensweise:

Das Skript liest als erstes den Standarddrucker aus. Dann geht es die installierten Netzwerk-Drucker der Reihe nach durch und prüft ob in den Verbindungeigenschaften der String "AlterServername" vorkommt. Ist das der Fall legt es denselben Drucker mit Verbindung auf den neuen an und löscht danach den alten Drucker. Zum Schluss wird der Standarddrucker neu gesetzt. Dieser sollte nun der selbe sein wie vorher, nur verweist er nun auf den neuen Server.

 

Ist das das, was du suchst?

Link zu diesem Kommentar

Hi!

 

Skript s.u.

Ich habe das Skript schon zweimal benutzt und fand es hilfreich. Allerdings übernehme ich natürlich keine Gewähr, dass es bei dir in dieser unveränderten Form ohne Probleme funktioniert. Dementsprechend übernehme ich auch keine Gewähr für irgendwelche Datenverluste oder Schäden, die durch die Benutzung auftreten...

 

TIP: Sollte das Skript ohne Fehler durchlaufen, aber deine Drucker nicht umstellen, dann prüfe das Ereignislog "Anwendung". Dort müssten mehrere Meldungen mit Quelle WSH drinstehen. Die sagen eine Menge darüber aus, was das Skrip macht, bzw. gemacht hat(oder auch nicht).

 

'----------------------------------------------------------
' Variablendefinitionen
'----------------------------------------------------------
strAlterServer = "srv"
strNeuerServer = "srv1"

'----------------------------------------------------------
' Konstantendefinition
'----------------------------------------------------------
Const SUCCESS 		= 0
Const FEHLER 		= 1
Const WARNING 		= 2
Const INFORMATION 	= 4
Const AUDIT_SUCCESS = 8
Const AUDIT_FAILURE = 16

'----------------------------------------------------------
' Ausblenden eventueller Fehlermeldungen
'----------------------------------------------------------
'On Error Resume Next

'----------------------------------------------------------
' Instanzieren des Windows Scripting Hosts
'----------------------------------------------------------
Set Network	= CreateObject("Wscript.Network")
Set WShell	= CreateObject("WScript.Shell")  

'----------------------------------------------------------
' Ermitteln des Standarddruckers
'----------------------------------------------------------
DefaultDrucker = ""  
DefaultDrucker = WShell.RegRead("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
DefaultDrucker = Left(DefaultDrucker, InStr(1, DefaultDrucker, ",") - 1)
WShell.Logevent INFORMATION, "Default printer is " & DefaultDrucker
If InStr(1, DefaultDrucker, strAlterServer, vbTextCompare) > 0 then DefaultDrucker = Replace(DefaultDrucker, strAlterServer, strNeuerServer)

'----------------------------------------------------------
' Alle Netzwerkdrucker werden überprüft, ob sie auf den 
' alten Printserver verweisen. Diese werden dann auf den
' neuen Printserver umgeschrieben und anschließend gelöscht.
'----------------------------------------------------------
Set colPrinters = Network.EnumPrinterConnections
strLog = ""
For i = 0 To colPrinters.Count - 1 Step 2
Err.number = 0
Typ = INFORMATION
strLog = "Process Printer: " & colPrinters.Item(i) & vbTab & colPrinters.Item (i + 1) & "..." & vbNewLine
If InStr(1, LCase(colPrinters.Item(i)), LCase(strAlterServer), vbTextCompare) > 0 Or _
	InStr(1, LCase(colPrinters.Item(i + 1)), LCase(strAlterServer), vbTextCompare) > 0 Then
	strLog = strLog & "Found string: " & strAlterServer & vbNewLine
	strAlterDrucker = colPrinters.Item(i)
	strNeuerDrucker = Replace(colPrinters.Item(i), strAlterServer, strNeuerServer)
	strLog = strLog & "Add printer: " & strNeuerDrucker & "..."
	Network.AddWindowsPrinterConnection strNeuerDrucker
	strLog = strLog & " DONE!" & vbNewLine
	strLog = strLog & "Delete printer: " & strAlterDrucker & "..."
	Network.RemovePrinterConnection strAlterDrucker, True, True
	strLog = strLog & " DONE!" & vbNewLine
Else
	strLog = strLog & "Keine Übereinstimmung mit " & strAlterServer & " gefunden!" & vbNewLine
End If
If Err.number <> 0 Then
	Typ = FEHLER
	strLog = "=== ERROR ===" & vbNewLine & strLog & vbNewLine & Err.Description & vbNewLine
	strLog = strLog & Err.Source 
Else
	Typ = SUCCESS
End If
WShell.Logevent Typ, strLog
strLog = ""
Next

Network.SetDefaultPrinter DefaultDrucker
WShell.Logevent INFORMATION, "New default printer is " & DefaultDrucker

Set Network = Nothing
Set WShell = Nothing

 

P.S.: Wäre nett, wenn du schreiben könntest, ob es funktioniert hat:)

Link zu diesem Kommentar

Hallo,

 

nochmals eine Frage zum Script: ich hab die beiden Servernamen ausgetauscht - jetzt aber: Windows Script Host: zeile 53, Zeichen 3, Fehler: der Druckername ist unzulässig

code 80070709. Quelle null (soll das heißen, dass irgendwo ein Leerzeichen stört oder wurde die Variable nicht gefüllt??)

 

in diesem Bereich befinden sich nur die Variablen - was könnte da schieflaufen??

 

Gruß

 

Evi

Link zu diesem Kommentar

Das ist der Add-Befehl für die neue Druckerverbindung. Ich denke, dass da irgendwas bei der Ersetzung schief gelaufen ist.

 

Nimm einmal das Hochkomma vor der Zeile 20 "On error resume next" heraus und lass das Skript laufen. Nun sollte das Skript durchlaufen, aber im Eventlog "Anwendung" eine Fehlermeldung drin haben.

 

Evtl siehst du schon, was da nicht läuft, ansonsten posten.

 

Edit: Und nimm mal die aktualisierte Version oben aus dem Code-Ausschnitt, ich hatte zuerst die verkehrte Version gepostet. Aber jetzt ist die korrekte drin. Und da ist es dann nämlich Zeile 54.

Link zu diesem Kommentar

Hi!

 

Wenn du über VBscript einen Drucker abfragst, dann hat dieser zwei Komponenten:

1.) Den Namen des Druckers (Also das, was du zu sehen bekommst, wenn du "Drucker und Faxgeräte" öffnest)

2.) Den Port des Druckers(Also "LPT1:" bei einem Paralleldrucker, "\\server\share" bei einem Netzwerkdrucker)

 

Das Skript liest diese Parameter aus den vorhanden Druckern aus und schreibt sie in die Ereignisanzeige:

strLog = "Process Printer: " & colPrinters.Item(i) & vbTab & colPrinters.Item (i + 1) & "..." & vbNewLine

Wenn im Port des Druckers die Bezeichnung des alten Servers vorkommt,

If InStr(1, LCase(colPrinters.Item(i)), LCase(strAlterServer), vbTextCompare) > 0 Or _
	InStr(1, LCase(colPrinters.Item(i + 1)), LCase(strAlterServer), vbTextCompare) > 0 Then

dann wird dieser durch den Namen des neuen Servers ersetzt.

strNeuerDrucker = Replace(colPrinters.Item(i), strAlterServer, strNeuerServer)

 

D. h. Schau dir in der Ereignisanzeige die erste Zeile an, die mit "Process Printer" anfängt. Dort stehen zwei Datensätze dahinter. Der erste muss der Port, also der UNC-Pfad, und der zweite die Bezeichnung sein.

Ansonsten: Poste mal den gesamten Fehlereintrag aus der Ereignisanzeige.

 

EDIT:

Die nächste Zeile in der Ereignisanzeige sagt dir, welchen Drucker er anlegen möchte:

strLog = strLog & "Add printer: " & strNeuerDrucker & "..."

Dort sollte der UNC-Pfad zum neuen Server stehen. Dieser Pfad muss natürlich existieren! Also einfach mal kopieren und über Start>Ausführen probieren, ob der Client da wirklich drauf kommt.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...