boindilo
Goto Top

Anmeldescript Win2003 server, Druckerfreigabe Rechnerabhängig

Anmeldescript Win2003 server -- Druckerfreigabe Rechnerabhängig

Hallo.
Ich möchte mit einem win2003 server ein loginscript so einrichten, dass folgendes abgearbeitet wird (in zeitlicher reihenfolge):

1. rechnername erkennen
2. falls rechnername = pc1 --> script1 ausführen
3. falls rechnername = pc2 --> script2 ausführen

das ganze sieht nämlich so aus, dass wir mehrere computerräume mit je einem drucker haben der in diesem raum dann natürlich als standard gesetzt werden soll... die scripte sind vorhanden, nur die rehnerspezifische ausführung ist noch nicht realisiert worden, da uns unklar ist, wie dies realisierbar ist ... er müsste also wohl jeden pcnamen abfragen und dann die drucker bereitstellen, je nach pcname.

bitte jetzt nicht meckern, falls es so ein tehma schon gibt, aber ich habe nach der3 stündigen suche danach aufgegeben, nachdem ich nur erfahren habe, dass es wohl GEHT, aber ich nirgends einen ansatzpunkt gefunde habe, wie. ich habe nur die GRUPPENspezifische variante gefunden, die wir aber leider nicht benötigen (bzw. nur teilweise).

Vielen Dank schonmal für jede kommende Antwort!


boindilo

Content-Key: 51925

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

Printed on: April 24, 2024 at 13:04 o'clock

Member: gemini
gemini Feb 17, 2007, updated at Oct 18, 2012 at 16:31:40 (UTC)
Goto Top
Hallo boindilo,

willkommen im Forum!

Tom73 hat dafür einen IMHO sehr guten Vorschlag veröffentlicht:
Netzwerkdrucker automatisch verbinden - ein Lösungsvorschlag

Ich mach es über das Attribut location (Standort) des Computerobjekts im AD.

strPrintSRV1 = <Druckserver>
strContainer	= "OU=<untergeordnete OU>,OU=<übergeordnete OU>"  

Set WshNetwork = Wscript.CreateObject("Wscript.Network")  
strComputer = LCase(WshNetwork.ComputerName)

Set objRootDSE = GetObject("LDAP://rootDSE")  
Set objItem = GetObject("LDAP://cn=" & strComputer & "," & strContainer & "," & objRootDSE.Get("defaultNamingContext"))  
strLocation = objItem.Get("location")  

Select Case strLocation
	Case "Raum1"  
		WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV1 & "\Drucker1"  
		WshNetwork.SetDefaultPrinter "\\" & strPrintSRV1 & "\Drucker1"  
	Case "Raum2"  
		WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV1 & "\Drucker2"  
		WshNetwork.SetDefaultPrinter "\\" & strPrintSRV1 & "\Drucker2"  
	Case "Raum1000"  
		WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV1 & "\Drucker1000"  
		WshNetwork.SetDefaultPrinter "\\" & strPrintSRV1 & "\Drucker1000"  
	Case Else
HTH,
gemini
Mitglied: 9299
9299 Feb 17, 2007 at 11:04:52 (UTC)
Goto Top
Und wenn die Batchscripte mehr liegen dann auf folgenende Art.

if %computername% =pc1 goto drucker1


:drucker1
rundll32.exe "Druckermappingbefehl" oder als WMIC Befehl
wmic printer call addprinterconnection \\druckserver\drucker1
Member: bastla
bastla Feb 17, 2007 at 11:37:29 (UTC)
Goto Top
... oder, bei sinnvoll benannten Computern (etwa "Raum1-PC1", daher: erste 5 Stellen geben den Raum an):
set Drucker=
if /i %computername:~0,5%==Raum1 set Drucker=Drucker1
if /i %computername:~0,5%==Raum2 set Drucker=Drucker2
...
if defined Drucker goto :DruckerFestlegen
echo Drucker für Computer %computername% konnte nicht ermittelt werden - wenden Sie sich an den Administrator!
::oder etwa automatische Mail an den Admin per blat
goto :eof
:DruckerFestlegen
rundll32.exe printui.dll,PrintUIEntry /q /y /in /n \\druckserver\%Drucker%

Grüße
bastla
Member: boindilo
boindilo Feb 17, 2007 at 13:10:30 (UTC)
Goto Top
vielen dank schonmal für die vielen vorschläge... auf den ersten blick kann ich schonmal sagen, dass das bestimmt weiterhilft! ich werde das am montag sofort testen und ausprobieren, was bei uns am besten läuft =) echt klasse!

mfg


boindilo

edit: habe nun inzwischen das ganze bei mir realisiert, und dabei das script von >bastla< verwendet, da dies bei uns am einfachsten zu realisieren war (computernamen bereits vernünftig gesetzt). außerdem habe ich noch eine fehlermeldung per vbs datei eingebunden, damit die user die (falls vorhandene) fehlermeldung besser wahrnehmen und nicht einfach wegklicken. vielen dank noch einmal für alle kommentare. =)