Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Änderung von Servernamen per Batch nach Neuinstallation von Druckern auf einem neuen Printserver

Frage Microsoft Windows Netzwerk

Mitglied: 68154

68154 (Level 1)

04.08.2008, aktualisiert 18.10.2012, 6302 Aufrufe, 6 Kommentare

Wir müssen einen Printserver austauschen, da sein Alter sich auf die Stabilität auswirkt...

Nachdem wir die Drucker ( ca. 30 oder mehr, kann ich im Moment nicht sagen ) auf dem neuen Printserver installiert haben, müssen wir unseren Mitarbeitern möglichst einfach die Drucker umstellen können ( in Windows ). Dies würden wir gerne über einen Batch machen den wir an diese Mitarbeiter verteilen würden. Dieser Batch soll einfach den Pfad mit dem alten Servernamen durch den Pfad mit dem neuen Servernamen ersetzten. Die Bezeichnungen der einzelnen Drucker wird sich nicht ändern.

Leider habe ich nach intensiver Suche keinen Batch mit solchen Möglichkeiten gefunden.

Desshalb ist meine Frage ob dies realisierbar ist und ob ihr bereits von so einem Batch wisst.
Unsere Mitarbeiter sind User und sehr verstreut, desshalb wäre dies die einfachste Lösung.

Vielen Dank für eure Aufmerksamkeit und ich freue mich schon auf konstruktive Anregungen.
Mitglied: 60730
04.08.2008, aktualisiert 18.10.2012
Servus,

du mußt nur richtig suchen

Gruß
Bitte warten ..
Mitglied: 68154
04.08.2008 um 15:39 Uhr
Vielen Dank für deine Antwort.
Hab ich wohl überlesen.
Ich werd das so gleich mal austesten.

Gruss
Bitte warten ..
Mitglied: MegaTraveller
04.08.2008 um 15:51 Uhr
Hallo,

vielleicht hilft Dir ja das hier weiter.

Bye
MT
Bitte warten ..
Mitglied: stbewo
05.08.2008 um 07:42 Uhr
Hi,

wir hatten 2003 auch einmal die gleiche Umstellung wie Du. Für den Benutzer hatten wir folgendes Script benutzt. Kannst Du auch im Login Script einbauen, da ein Registry Eintrag erzeugt wird, der bei jedem Ausführen überprüft wird, ob schon einmal gelaufen. Das Script musst Du natürlich an Deine Bedürfnisse noch anpassen.

Gruß
Stefan

Option Explicit

Dim Text, i, PS1, PS2, PS3, PS4, PS5, PS6, nPS1, nPS2, nPS3, nPS4, nPS5, nPS6
Dim drucker, server, tempname, fso, fi2, message, intro, def_printer, old_def_printer, error_meldung, reg_eintrag
Dim WshNetwork, WshShell, oDevices ' Objektvariable
Const ForWriting = 8 ' 2 = Write und 8 = anhängen

Set WshShell = WScript.CreateObject("WScript.Shell")

' Erstelle neues WshNetwork-Objekt, welches man zum Zugriff
' auf die Netzwerk-Eigenschaften brauchen.
Set WshNetwork = WScript.CreateObject("WScript.Network")

On error resume next

if WshShell.RegRead("HKCU\Software\Shortcut\chgPrinter\chgPrinterVersion") <> "100" Then
Select Case err.number
Case 0
error_meldung = " Registryeintrag vorhanden " & vbCRLF
Case -2147024894
error_meldung = " Registryeintrag fehlt " & vbCRLF
Case Else
error_meldung = " Unbekannter Fehler: Code " & Err.Number & " Bezeichnung : " & Err.Description & vbCRLF
End Select

' Alte Druckserver
PS1 = "DE-MANN-PRINT1"
PS2 = "DE-MANN-PRINT2"
PS3 = "DE-MANN-PRINT3"
PS4 = "DE-MANN-PRINT4"
PS5 = "DE-MANN-PRINT5"
PS6 = "DE-MANN-PRINT6"
' Neue Druckserver
nPS1 = "DE-MANN-PS1"
nPS2 = "DE-MANN-PS2"
nPS3 = "DE-MANN-PS3"
nPS4 = "DE-MANN-PS4"
nPS5 = "DE-MANN-PS5"
nPS6 = "DE-MANN-PS6"

intro = "Es werden jetzt ihre installierten Drucker auf andere Druckserver umgestellt." &vbCRLF &vbCRLF
intro = intro + "Die Drucker auf den Servern DE-MANN-PRINT(X) werden jetzt auf die Drucker, der Server DE-MANN-PS(X) umgestellt." &vbCRLF &vbCRLF
intro = intro + "Bereits umgestellte Drucker werden erkannt." &vbCRLF &vbCRLF

msgBox intro, vbInformation, "Druckerumstellung"

def_printer = WshShell.RegRead("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
old_def_printer = Split(def_printer, ",", -1, 1)
'msgBox "Alter Default Printer = : " & old_def_printer(0)
def_printer = Replace(ucase(old_def_printer(0)), "PRINT", "PS", 1, 1, 1)
'msgBox "Neuer Default Printer = : " & def_printer

' Schreiben der Logdatei "Printer.txt" in "C:\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fi2 = fso.OpenTextFile("C:\PRINTER.TXT", ForWriting, true) ' Ausgabedatei

' Jetzt die Zuordnungen auflisten
Set oDevices = WshNetwork.EnumPrinterConnections

' Überschrift der Ausgabe

Text = vbCRLF &" Zusammenfassung der Druckerzuordnungen" & vbCRLF
Text = text &"-----------------------------------------------------------------------" & vbCRLF & vbCRLF
fi2.WriteLine "------------S T A R T ----D R U C K E R U M S T E L L U N G -----------" & vbCRLF

fi2.Writeline "Datum = " & Date & " Uhrzeit = " & time & vbCRLF
fi2.Writeline "Computername = " & WshNetwork.ComputerName & vbCRLF & "Benutzername = " & WshNetwork.UserName & vbCRLF
fi2.Writeline "Old Default Printer = " & old_def_printer(0) & vbCRLF
fi2.WriteLine "-----------------------------------------------------------------------" & vbCRLF

' Untertitel der Ausgabe
Text = text & " Die alten Druckerzuordnungen lauteten:" & vbCRLF & vbCRLF
text = text & "Old Default Printer = " & old_def_printer(0) & vbCRLF

' Ermitteln der alten (aktuell) definierten Druckerobjekte
For i = 0 To oDevices.Count-1 Step 2
' Ausgabe bei jedem Durchlauf ergänzen
Text = " " & Text & oDevices(i) & " " & oDevices(i+1) & vbCRLF
' Variable splitten wo ein \ vorkommt
tempname = Split(oDevices(i+1), "\", 2, 1)
for each server in tempname
' Variable abermals splitten wo ein \ vorkommt, damit Server und Drucker übrig bleibt
drucker = Split(server, "\", -1, 1)
' Prüfen welcher Printserver gefunden wurde
if Instr(1, ucase(server), PS1, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS1&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS1&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS2, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS2&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS2&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS3, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS3&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS3&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS4, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS4&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS4&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS5, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS5&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS5&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS6, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS6&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS6&"\"&drucker(2)
end if
Select Case err.number
Case 0
message = " Info: Druckervorgang " & "\\"&server&"\"&drucker(2) & " erfolgreich durchgeführt." & vbCRLF
'fi2.WriteLine message
Case -2147023688
message = " Fehler: Drucker " & "\\"&server&"\"&drucker(2) & " existiert nicht." & vbCRLF
'fi2.WriteLine message
Case Else
message = "Unbekannter Fehler: Code " & Err.Number & " " & Err.Description & vbCRLF
fi2.WriteLine message
End Select
next
Next

' Abermals die neuen Druckereinstellungen auslesen
Set oDevices = WshNetwork.EnumPrinterConnections
' Ausgabetext definieren
Text = " " & Text & vbCRLF &vbCRLF & " Die neuen Druckerzuordnungen lauten jetzt:" & vbCRLF &vbCRLF

' Ermitteln der alten (aktuell) definierten Druckerobjekte
For i = 0 To oDevices.Count-1 Step 2
Text = " " & Text & oDevices(i) & " " & oDevices(i+1) & vbCRLF
Next

' Default Printer setzen
WshNetwork.SetDefaultPrinter def_printer

text = text & "New Default Printer = " & def_printer & vbCRLF

MsgBox Text, vbOkonly + vbInformation

fi2.WriteLine Text & "----------------------------------------------------" & vbCRLF & error_meldung
fi2.WriteLine " " & vbCRLF & vbCRLF & "--------------------------- E N D E --------------------------------" & vbCRLF

'In Registry schreiben, um bei jedem Start zu prüfen ob schon gelaufen
WshShell.RegWrite "HKCU\Software\shortcut\chgPrinter\chgPrinterVersion", "100"

Set fi2 = Nothing

else
' msgBox "Fehlermeldung = : " & err.Number
' MsgBox "Ist schon gelaufen"
WScript.Quit
end if
WScript.Quit
Bitte warten ..
Mitglied: 68154
05.08.2008 um 09:23 Uhr
Hallo zusammen

Ich hab noch eine Frage.
Wie verhält es sich, wenn ich wohl die Serverbezeichnungen die ich ändern will kenne, allerdings die Drucker der einzelnen User nicht kenne. Ich möchte z.B. einfach nur den Eintrag bei HKEY_CURRENT_USER - Printers - Connections so ändern, dass es die Serverbezeichnung ändert den Drucker aber unverändert stehen lässt.

Vielen Dank für eure Anregungen
Bitte warten ..
Mitglied: stbewo
05.08.2008 um 09:28 Uhr
Mit dem Script wird nur der Servername geändert und die Druckernamen bleiben erhalten.
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(1)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Batch & Shell
Verschachtelte For Schleife für Batch Neuling (1)

Frage von yperiu zum Thema Batch & Shell ...

Windows Update
Windows Update-Suche nach Win7 Neuinstallation wieder schneller (2)

Erfahrungsbericht von the-buccaneer zum Thema Windows Update ...

Batch & Shell
gelöst Alle Ordner bis auf die letzten 3 per Batch löschen (5)

Frage von Stefan2733 zum Thema Batch & Shell ...

Batch & Shell
gelöst Fenstertitel von anderen Tasks per batch auslesen (3)

Frage von NetMare zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (41)

Frage von Winuser zum Thema Hyper-V ...

Linux Netzwerk
gelöst DHCP vergibt keine Adressen (30)

Frage von Maik82 zum Thema Linux Netzwerk ...

Exchange Server
gelöst Bestehende eMails autoamatisch weiterleiten (22)

Frage von metal-shot zum Thema Exchange Server ...

Apache Server
gelöst Lets Encrypt SSL mit Apache2 (20)

Frage von banane31 zum Thema Apache Server ...