mschweyen
Goto Top

redundante Drucker im Active Directory ?

Hallo Leute,
wir integrieren momentan eine Active Directory in unserem Untenehmen. (Windows 2003 Server)
Wir haben ca. 50 Drucker die über TCP/IP angesteuert weden.
Da wir eine perfekte Ausfallsicherheit garantieren wollen, soll der Druckserver auch doppelt vorhanden sein
(1. und 2. Domaincontroller)

Wie ich Drucker Freigeben und im Active Directory anlegen kann ist klar und funktioniert auch.

!!! Ich möchte allerdings ein Objekt (Drucker) im Active Directory, der entweder über den 1. oder über den 2. Domaincontroller druckt. So, dass ein Ausfall des 1. Domaincontrollers keinen unterschied machen würde !!!

Bitte helft mir weiter.
Falls dies nicht möglich ist, bitte auch schreiben!

Mfg Martin Schweyen

Content-Key: 30885

Url: https://administrator.de/contentid/30885

Ausgedruckt am: 28.03.2024 um 09:03 Uhr

Mitglied: Dani
Dani 21.04.2006 um 13:50:56 Uhr
Goto Top
Hi,
ich les dein Beitrag schon zum 5. durch. Ich glaube nun face-smile, dass ich verstehe was du meinst. Du gibst diese 50 Drucker am 1. & 2. DC frei. Auf den Clients wird dann per LoginScript oder wie auch sonst, die Drucker eingebunden. Dadurch sind sie am 1. DC gebunden. Wenn der 1. Dc jetzt aus irgendwelchen Gründen DOWN ist, soll der 2. DC übernehmen.

Ich geh jetzt davon mal aus das ich das richtig verstanden habe:
Ich würde mal sagen, dass ist nicht so einfach. Der Drucker beim Client, ist ja mit der IP bzw. Servername eingebunden. Du müsstest dann theoretisch den Servername austauschen. Dazu müsstest du den Benutzer ein VBScript zur Verfügung stellen, dass dann den Servername/IP austauscht!


GRuß
Dani
Mitglied: mschweyen
mschweyen 02.05.2006 um 11:39:01 Uhr
Goto Top
Genau diese Idee ist mir auch in den sinn gekommen!

Hier:
Auf beiden DC´s müssen die Drucker mit gleichem Name und Freigabenamen eingetragen werden. Auf einen von den beiden muss der Hacken: "Im Active Directory veröffentlichen" gesetzt werden und bei dem anderen nicht. Sonst sieht der User die Drucker dopptelt im AD.

Im VBScript müssen nur noch die Variablen für den Server-DNS eingetragen werden.

Dieses Skript könnte man dann via GP beim Systemstart laufen lassen


'####################################################
'# #
'# Skript zum wechseld der Druckerverbindungen des Clients. #
'# Dies Skript sollte ausgeführt werden, wenn der erste Domaincontroller #
'# der Active directory ausfällt. #
'####################################################


dim server1
dim server2

server1= "dc01" DNS-Name esten Domaincontrollers
server2= "dc02"
DNS-Name zweiten Domaincontrollers

dim oService
dim oLocator
dim buffer
dim bResult
dim aResult
dim Printers
dim oEnum

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

'kontrolle ob 1.Domaincontroller verfügbar ist
aResult = WshShell.Run("ping -n 1 " & server1, 0, TRUE)
bResult = WshShell.Run("ping -n 1 " & server2, 0, TRUE)

oService = null
set oLocator = CreateObject("WbemScripting.SWbemLocator")
set oService = oLocator.ConnectServer()
oService.Security_.impersonationlevel = 3
oService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege"
set oEnum = oService.ExecQuery("select DeviceID from Win32_Printer where default=true")

for each oPrinter in oEnum
dPrinter = oPrinter.DeviceID
next

set Printers = oService.InstancesOf("Win32_Printer")

for each oPrinter in Printers
'wscript.echo L_Empty_Text 'dient zur kontrolle allerdings muss
'wscript.echo oPrinter.DeviceID 'das Skript dann wie folgt gestartet werden:
'cscript printersw.vbs
buffer = oPrinter.DeviceID

if aResult Then
if InStr(buffer,server1) <> 0 Then 'wenn der 1.Domaincontroller ausfällt
oPrinter.Delete_
buffer = AddPrinter(buffer, server1, server2)
End If
End If

if bResult Then
if InStr(buffer,server2) <> 0 Then 'wenn der 2.Domaincontroller ausfällt
oPrinter.Delete_
buffer = AddPrinter(buffer, server1, server2)
End If
End If

Next

function AddPrinter(buffer, server1, server2)
Dim WSHNetwork
Dim WSHShell
Dim Ver
Set WSHNetwork = Wscript.CreateObject("Wscript.Network")
Set WSHShell = Wscript.CreateObject("Wscript.Shell")

If aResult Then 'falls der 1.Domaincontroller ausfällt
buffer=Replace(buffer,server1,server2)
End If

If bResult Then 'falls der 2.Domaincontroller ausfällt
buffer=Replace(buffer,server2,server1)
End If


'wscript.echo buffer
WshNetwork.AddWindowsPrinterConnection buffer

end function


Mit freundlichen Grüßen
Martin Schweyen
E-Mail: mschweyen@gmx.de