Druckerzuweisung an Computerkonto, nicht an Benutzerkonto
Hallo! Problematik in einem Schulnetzwerk:
Es existieren mehrere Informatikräume mit je einem Netzwerkdrucker. Diese sind z.Zt. alle per AD veröffentlicht.
Alle Schüler haben ein eigenes namensbasierendes Login in der W2K Client-Server-Umgebung.
Alle Schüler haben ein festes, nicht veränderbares Benutzer-Profil. (Muster-Schüler)
Alle Schüler haben nach dem Einloggen Zugriff auf einen öffentlichen TEMP-Ordner auf dem Server. (Netzlaufwerk E - zum Daten tauschen)
Alle Schüler haben nach dem Einloggen Zugriff auf ihr privates namensbasiertes Verzeichnis. (Netzlaufwerk F - HOME-Directory per PROFIL)
Loggt sich Schüler XY in verschiedenen Räumen in verschiedenen Stunden ein, folgt ihm sein Verzeichnis (auf jeden Fall sieht es so für ihn aus).
Wie bekomme ich es hin, dass die Schüler, die in einem Raum sitzen auch nur auf dem passenden Drucker drucken können?
Dies muss gelöst vom Muster-Schüler-Profil gehen, denn das ist ja immer gleich - oder ist da ein Denkfehler?
Ähnliches Problem hatte ich schon einmal hier angesprochen, nur bezogen auf einen Proxy-Server.
2 DSL-Leitungen, PCs sollen sich immer dort bedienen, wo die Internetleitung physikalisch am nähesten ist, also auch nicht Benutzergebunden, sonder Computergebunden. Aber damals konnte mir niemand so richtig weiterhelfen.
Bedanke mich jetzt schon für jeden Tipp.
Es existieren mehrere Informatikräume mit je einem Netzwerkdrucker. Diese sind z.Zt. alle per AD veröffentlicht.
Alle Schüler haben ein eigenes namensbasierendes Login in der W2K Client-Server-Umgebung.
Alle Schüler haben ein festes, nicht veränderbares Benutzer-Profil. (Muster-Schüler)
Alle Schüler haben nach dem Einloggen Zugriff auf einen öffentlichen TEMP-Ordner auf dem Server. (Netzlaufwerk E - zum Daten tauschen)
Alle Schüler haben nach dem Einloggen Zugriff auf ihr privates namensbasiertes Verzeichnis. (Netzlaufwerk F - HOME-Directory per PROFIL)
Loggt sich Schüler XY in verschiedenen Räumen in verschiedenen Stunden ein, folgt ihm sein Verzeichnis (auf jeden Fall sieht es so für ihn aus).
Wie bekomme ich es hin, dass die Schüler, die in einem Raum sitzen auch nur auf dem passenden Drucker drucken können?
Dies muss gelöst vom Muster-Schüler-Profil gehen, denn das ist ja immer gleich - oder ist da ein Denkfehler?
Ähnliches Problem hatte ich schon einmal hier angesprochen, nur bezogen auf einen Proxy-Server.
2 DSL-Leitungen, PCs sollen sich immer dort bedienen, wo die Internetleitung physikalisch am nähesten ist, also auch nicht Benutzergebunden, sonder Computergebunden. Aber damals konnte mir niemand so richtig weiterhelfen.
Bedanke mich jetzt schon für jeden Tipp.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 10474
Url: https://administrator.de/contentid/10474
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
7 Kommentare
Neuester Kommentar
Du brauchst ein Kriterium an dem du die Räume unterscheiden kannst.
Das kann bspw. der Computername sein, wenn diese einer entspr. Nomenklatur folgend vergeben sind. Nachteil: Wenn der Computer in einen anderen Raum gestellt wird muss er umbenannt werden.
Ich benutze dazu das Attribut location der Computerobjekte im AD. Im Loginscript wird mittels LDAP dieses Attribut abgefragt und ausgewertet. Das funktioniert einwandfrei, und wenn der Rechner verschoben wird muss lediglich der Standort im AD angepasst werden.
Ich kann dir den Ausschnitt aus dem Script morgen posten, wenn ich wieder im Büro bin.
Das kann bspw. der Computername sein, wenn diese einer entspr. Nomenklatur folgend vergeben sind. Nachteil: Wenn der Computer in einen anderen Raum gestellt wird muss er umbenannt werden.
Ich benutze dazu das Attribut location der Computerobjekte im AD. Im Loginscript wird mittels LDAP dieses Attribut abgefragt und ausgewertet. Das funktioniert einwandfrei, und wenn der Rechner verschoben wird muss lediglich der Standort im AD angepasst werden.
Ich kann dir den Ausschnitt aus dem Script morgen posten, wenn ich wieder im Büro bin.
... warum regelst Du das nicht über ein computergebundenes Login-Script? Ich gehe von einer Domäne aus, dann kannst Du doch ein Gruppenrichtlinienobjekt mit einer "Computerpolicy" für jeden Raum anlegen und dort über z.B.:
Drucker per Login Script
die Drucker mappen,
Gruß
Atti
PS: ähnlich könnte man das mit dem Proxy natürlich auch regeln ...
Drucker per Login Script
die Drucker mappen,
Gruß
Atti
PS: ähnlich könnte man das mit dem Proxy natürlich auch regeln ...
also bei uns ist das so.....
wir haben in jedem zimmer 2 drucker...
die zimmer sind unterschieden nach [zimmer-nr]-[PC-Nr]..also zB 434-12
und dann wir mit hilfe "kixstart" der druckerscript ausgeführt wo drin steht...
if (computername=434)
drucker....
else if
ka wie der script jetzt genau aus sehen müsste...ich könnte es morgen raus finden...wenn ich unseren Admin im hause sehe...
mfg
norbert
wir haben in jedem zimmer 2 drucker...
die zimmer sind unterschieden nach [zimmer-nr]-[PC-Nr]..also zB 434-12
und dann wir mit hilfe "kixstart" der druckerscript ausgeführt wo drin steht...
if (computername=434)
drucker....
else if
ka wie der script jetzt genau aus sehen müsste...ich könnte es morgen raus finden...wenn ich unseren Admin im hause sehe...
mfg
norbert
Der Ausschnitt für die Druckerzuweisung
' #############################
' Logon.vbs
' #############################
Option Explicit
On Error Resume Next
Dim WshNetwork, WshShell, CRLF, objArgs
Dim strMsg, strCompany, strUserName, strCompName, strDomain
Dim strLogonSRV, strFileSRV, strPrintSRV, strContainer, strLocation
Dim objRootDSE, objItem
Dim i, colDrives, colPrinters, nReturnCode, nSecondsToWait
CRLF = Chr(13) & Chr(10)
strLogonSRV = "<<a>DeinDC<a>>"
strPrintSRV = "<<a>Printserver<a>>"
strFileSRV = "<<a>Fileserver<a>>"
strContainer = "OU=<<a>OU<a>>"
Set WshNetwork = Wscript.CreateObject("Wscript.Network")
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objArgs = Wscript.Arguments
strDomain = WshNetwork.UserDomain
strUserName = ""
strCompName = LCase(WshNetwork.ComputerName)
' ----------------------------------------------------------
' Verbindung zu Verzeichnis
Set objRootDSE = GetObject("LDAP:rootDSE")
If strContainer = "" Then
Set objItem = GetObject("LDAP:" & objRootDSE.Get("defaultNamingContext"))
Else
Set objItem = GetObject("LDAP://cn=" & strCompName & "," & strContainer & "," & objRootDSE.Get("defaultNamingContext"))
End If
strLocation = objItem.Get("location")
' ----------------------------------------------------------
' Einrichten der Drucker
WshNetwork.RemovePrinterConnection "\\" & strPrintSRV & "\<<a>Drucker1<a>>"
WshNetwork.RemovePrinterConnection "\\" & strPrintSRV & "\<<a>Drucker2<a>>"
WshNetwork.RemovePrinterConnection "\\" & strPrintSRV & "\<<a>Drucker3<a>>"
If strLocation = "<<a>Raum1<a>>" Then
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\<<a>Drucker1<a>>"
WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\<<a>Drucker1<a>>"
ElseIf strLocation = "<<a>Raum2<a>>" Then
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\<<a>Drucker2<a>>"
WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\<<a>Drucker2<a>>"
ElseIf strLocation = "<<a>Raum3<a>>" Then
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\<<a>Drucker3<a>>"
WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\<<a>Drucker3<a>>"
End If
' #############################
Statt der IF-Anweisung kannst du natürlich auch Select Case einsetzen.
Hope it helps
' #############################
' Logon.vbs
' #############################
Option Explicit
On Error Resume Next
Dim WshNetwork, WshShell, CRLF, objArgs
Dim strMsg, strCompany, strUserName, strCompName, strDomain
Dim strLogonSRV, strFileSRV, strPrintSRV, strContainer, strLocation
Dim objRootDSE, objItem
Dim i, colDrives, colPrinters, nReturnCode, nSecondsToWait
CRLF = Chr(13) & Chr(10)
strLogonSRV = "<<a>DeinDC<a>>"
strPrintSRV = "<<a>Printserver<a>>"
strFileSRV = "<<a>Fileserver<a>>"
strContainer = "OU=<<a>OU<a>>"
Set WshNetwork = Wscript.CreateObject("Wscript.Network")
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objArgs = Wscript.Arguments
strDomain = WshNetwork.UserDomain
strUserName = ""
strCompName = LCase(WshNetwork.ComputerName)
' ----------------------------------------------------------
' Verbindung zu Verzeichnis
Set objRootDSE = GetObject("LDAP:rootDSE")
If strContainer = "" Then
Set objItem = GetObject("LDAP:" & objRootDSE.Get("defaultNamingContext"))
Else
Set objItem = GetObject("LDAP://cn=" & strCompName & "," & strContainer & "," & objRootDSE.Get("defaultNamingContext"))
End If
strLocation = objItem.Get("location")
' ----------------------------------------------------------
' Einrichten der Drucker
WshNetwork.RemovePrinterConnection "\\" & strPrintSRV & "\<<a>Drucker1<a>>"
WshNetwork.RemovePrinterConnection "\\" & strPrintSRV & "\<<a>Drucker2<a>>"
WshNetwork.RemovePrinterConnection "\\" & strPrintSRV & "\<<a>Drucker3<a>>"
If strLocation = "<<a>Raum1<a>>" Then
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\<<a>Drucker1<a>>"
WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\<<a>Drucker1<a>>"
ElseIf strLocation = "<<a>Raum2<a>>" Then
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\<<a>Drucker2<a>>"
WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\<<a>Drucker2<a>>"
ElseIf strLocation = "<<a>Raum3<a>>" Then
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\<<a>Drucker3<a>>"
WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\<<a>Drucker3<a>>"
End If
' #############################
Statt der IF-Anweisung kannst du natürlich auch Select Case einsetzen.
Hope it helps
guten morgen
ich habe mir gerade den kix32.exe drucker script mir angeguckt *g*
If substr(@wksta,1,3)="432"
AddPrinterConnection("\\server3\hplj432") EndIf
If substr(@wksta,1,3)="434"
AddPrinterConnection("\\server3\hplj434") EndIf
(@wksta,1,3)="432" - er leist nur die ersten 3 stellen des PC-Namen aus...in dem Fall 432
("\\server3\hplj432") - der netzwerkdrucker
sollte man mehr brauchen einfach mehr mals mit anderen variablen schreiben
viel erfolg...der script läuft auf einem NT server geht aber auf jeden server
ich habe mir gerade den kix32.exe drucker script mir angeguckt *g*
If substr(@wksta,1,3)="432"
AddPrinterConnection("\\server3\hplj432") EndIf
If substr(@wksta,1,3)="434"
AddPrinterConnection("\\server3\hplj434") EndIf
(@wksta,1,3)="432" - er leist nur die ersten 3 stellen des PC-Namen aus...in dem Fall 432
("\\server3\hplj432") - der netzwerkdrucker
sollte man mehr brauchen einfach mehr mals mit anderen variablen schreiben
viel erfolg...der script läuft auf einem NT server geht aber auf jeden server