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
GELÖST

Anmeldeskript Win SBS 2003 mit WinXP

Frage Microsoft Windows Userverwaltung

Mitglied: cjaugey

cjaugey (Level 1) - Jetzt verbinden

28.05.2008, aktualisiert 04.06.2008, 7412 Aufrufe, 7 Kommentare

Drucker Mapping mit login.vbs - Anmeldeskript für User bei Win SBS 2003 Std.Edition und WinXP Clients

System: Windows SBS 2003 Std. Edition mit 5 Win XP-Clients
Hallo,
ich habe folgende Problemstellung und würde mich über Hilfe freuen:

1) Der bei uns installierte WinSBS2003-Server verwendet ein Anmeldeskript (login.vbs) zum Mappen von Netzlaufwerken und Netzwerkdruckern.
Bisher funktionierte dies mit den zwei vorhandenen per LAN-Kabel am Server angeschlossenden Druckern einwandfrei.
Ich habe jedoch einen dritten Drucker hinzufügen wollen, der per USB-KAbel am Server hängt, und daher das Skript um eine Zeile ergänzt (s.u.).
Trotz der Ergänzung und Neustart des Servers und der Clients wird der neue Drucker NICHT automatisch gemappt.

2) Manuell lässt sich der neue Netzwerk-Drucker an den Clients jedoch problemlos hinzufügen und der Drucker funktioniert auch.
Der Pfad und NAME des Druckers ist im Skript korrekt wiedergegeben, exakt so, wie ich ihn beim manuellen Mappen am Client eingebe.

3) Das Anmeldeskript "login.vbs" enthält zum Thema Druckermapping folgenden Text:

If INGROUP ("NAMESICHERHEITSGRUPPE") Then
WSHNetwork.AddWindowsPrinterConnection "\\SERVERNAME\DRUCKER_1"
WSHNetwork.AddWindowsPrinterConnection "\\SERVERNAME\DRUCKER_2"
WSHNetwork.AddWindowsPrinterConnection "\\SERVERNAME\DRUCKER_3_NEU"
Rem WSHNetwork.SetDefaultPrinter "\\SERVERNAME\DRUCKER_1"
End If

4) Das SBS_LOGIN_SCRIPT.bat enthält ausschliesslich folgenden Code:

\\SERVERNAME\Clients\Setup\setup.exe /s SERVERNAME


Jetzt meine Frage: Wo liegt der Fehler?

Danke für Feedback!
Cyril
Mitglied: Biber
28.05.2008 um 18:40 Uhr
Moin cjaugey,

steht eventuell ein "on error goto 0" im nicht relevanten Teil des Loginscripts und werden eventuell die Drucker nicht vorher im Skript gelöscht?

Da läuft das Skript beim ersten bereits vorhandenen Drucker auf eine Mine (Kein Add möglich, weil ja schon vorhanden). Und zu der zeile mit dem nicht installierten Drucker kömmt er gar nicht.

tausche doch mal einfach die beiden Drucker1- und die DruckerNeu-Zeilen.

Grüße
Biber
Bitte warten ..
Mitglied: cjaugey
28.05.2008 um 19:12 Uhr
Danke für die schnelle Antwort.
Das Komplette login.vbs sieht so aus:

01.
'**********************************************************************************  
02.
' Set Environment Variables  
03.
'*********************************************************************************  
04.
Set WSHNetwork = WScript.CreateObject("WScript.Network")  
05.
Set WSHShell = WScript.CreateObject("WScript.Shell")  
06.
 
07.
On Error Resume Next  
08.
 
09.
Domain = WSHNetwork.UserDomain  
10.
UserName = ""  
11.
 
12.
While UserName = ""  
13.
UserName = WSHNetwork.UserName  
14.
MyGroups = GetGroups(Domain, UserName)  
15.
Wend 
16.
 
17.
'*********************************************************************************  
18.
' Main Process: 
19.
'*********************************************************************************  
20.
GrpMeb UserName  
21.
Wscript.Quit  
22.
 
23.
'*********************************************************************************  
24.
'Function: GetGroups 
25.
'*********************************************************************************  
26.
Function GetGroups(Domain, UserName)  
27.
Set objUser = GetObject("WinNT://" & Domain & "/" & UserName)  
28.
GetGroups=""  
29.
For Each objGroup In objUser.Groups  
30.
GetGroups=GetGroups & "[" & UCase(objGroup.Name) & "]"  
31.
Next  
32.
End Function  
33.
 
34.
'********************************************************************************  
35.
'Function: InGroup  
36.
'********************************************************************************  
37.
Function InGroup(strGroup)  
38.
InGroup=False  
39.
If InStr(MyGroups,"[" & UCase(strGroup) & "]") Then  
40.
InGroup=True  
41.
End If  
42.
End Function  
43.
 
44.
'********************************************************************************  
45.
'Map Drives: 
46.
'********************************************************************************  
47.
Sub GrpMeb(UNAME) 
48.
 
49.
If INGROUP ("NAMESICHERHEITSGRUPPE") Then 
50.
WSHNetwork.MapNetworkDrive "R:","\\SERVERNAME\ORDNER_1", TRUE 
51.
WSHNetwork.MapNetworkDrive "S:","\\SERVERNAME\ORDNER_2", TRUE 
52.
End If 
53.
 
54.
'********************************************************************************  
55.
'Map Printer: 
56.
'********************************************************************************  
57.
If INGROUP ("NAMESICHERHEITSGRUPPE") Then 
58.
WSHNetwork.AddWindowsPrinterConnection "\\SERVERNAME\DRUCKER_1" 
59.
WSHNetwork.AddWindowsPrinterConnection "\\SERVERNAME\DRUCKER_2" 
60.
WSHNetwork.AddWindowsPrinterConnection "\\SERVERNAME\DRUCKER_3_NEU" 
61.
Rem WSHNetwork.SetDefaultPrinter "\\SERVERNAME\DRUCKER_1" 
62.
End If 
63.
 
64.
End Sub 
Sieht also tatsächlich so aus, als würden die Drucker nicht erst entfernt. In der Tat habe ich den Eindruck, als würden Änderungen an dem Skript GAR nicht brücksichtigt (obwohl ich sicherheitshalber in der Gruppenrichtlinienverwaltung beim Skript den Objektstatus einmal auf 'deaktiviert' und dann wieder auf 'aktiviert' gesetzt habe). Muss man vielleicht sonst noch irgendwo dafür sorgen, dass das geänderte Skript auch tatsächlich "angewendet" wird (z.B. durch Serverneustart, o.Ä.)?

Wie müssten denn die Code-Zeilen lauten, um die das Skript ergänzt werden muss?

Wäre das hier (eingefügt VOR dem bisherigen Skript-Abschnitt "Map Printer" vielleicht eine Lösung?:

01.
'*********************************************************************************  
02.
'Delete All Network Printer Maps:  
03.
'*********************************************************************************  
04.
 
05.
If Left(WSHPrinters.Item(LOOP_COUNTER +1),2) = "\\" Then 
06.
      WSHNetwork.RemovePrinterConnection WSHPrinters.Item(LOOP_COUNTER +1),True,True 
07.
    End If 
08.
 
09.
On error resume next 
10.
 
11.
Set WshNetwork = WScript.CreateObject("WScript.Network") 
12.
Set oPrinters = WshNetwork.EnumPrinterConnections 
13.
For i = 0 to oPrinters.Count - 1 Step 2 
14.
WScript.Echo oPrinters.Item(i+1) 
15.
WshNetwork.RemovePrinterConnection oPrinters.Item(i+1) 
16.
 
17.
Next

Gruß
Cyril
Bitte warten ..
Mitglied: Biber
28.05.2008 um 19:54 Uhr
Moin Cyril,

(z.B. durch Serverneustart, o.Ä.)?
Na, so brutal nun nicht.. aber ein "gpupdate /force" könnte helfen.

Zu dem Skript:
Eine Forumssuche zu "RemovePrinterConnection" sollte (nach meiner Erinnerung) mehrere Beispiele liefern.
Insbesondere User gemini hat dazu ein paar Praxis/Produktiv-Beispiele gepostet.

Und nochmal zu dem Skript:
Wenn dort steht/stand "on Error macheinfachweiter", dann sieht es eher danach aus, als wenn wirklich das "neue" Skript noch gar nicht angezogen wird.
Denn funktionieren sollte es ja - auch wenn bei jedem gottverdammten Login mit In-Kauf-genommenen und einfach ignorierten Fehlern.

Schweineprogrammierung hieß das früher, bevor M$ sich durchsetzte.

Grüße
Biber
Bitte warten ..
Mitglied: cjaugey
28.05.2008 um 20:53 Uhr
Hallo Biber,

also ich habe

- versuchsweise den neuen Drucker an die erste Stelle gesetzt
- und dann gpupdate /force ausgeführt.
=> Es hat nichts geändert, der neue Drucker wird beim User-Logon NICHT gemappt.

Ausserdem habe ich folgendes probiert:
- Als User am Client eingeloggt.
- Einen der beiden ALTEN (=schon früher im Skript enthalten) Netzwerkdrucker manuell entfernt ("löschen")
- User abgemeldet und neu angemeldet.
=> selbst der soeben gelöschte ALTE Drucker wird nicht neu gemappt, ich muß ihn manuell mappen (dito für den NEUEN Drucker).

Bevor ich lange das Skript optimiere, stellt sich also zunächst die Frage, warum das Skript möglicherweise/offenbar GAR nicht gezogen wird, bzw. welche Einstellung ggf. dafür sorgt, dass die Skript-Zeilen zum Drucker-Mapping nichts bewirken.
Sonst kann ich da ja die tollsten "RemovePrinterConnection"-Schleifen einbauen...

Irgendwelche Ideen?

Grüße
Cyril

P.S. Bzgl. "Schweineprogrammierung": Die Installation des SBS2003 erfolgte durch ein großes (!) deutsches IT-Haus, für entsprechendes Geld, zugegebenermaßen allerdings unter ziemlichem Zeitdruck...
Bitte warten ..
Mitglied: Biber
28.05.2008 um 21:21 Uhr
Moin Cyril,

wenn es manuell gestartet klappt, dann hat ja auch der Computer oder User oder die Abteilung (ich weiß ja nicht, auf was sich deine SICHERHEITSGRUPPE bezieht) das Recht, die Druckerinformationen zu lesen. Den Fehler können wir wohl ausschließen.

Probier noch mal ein
gpupdate /target:computer /force /wait:0
Mit "computer" natürlich diurch den Computernamen ersetzt.

Muss schon an der Ecke sein... *grübel*

P.S.
Bzgl. "Schweineprogrammierung": Die Installation des SBS2003 erfolgte durch ein großes (!) deutsches IT-Haus...
Ein so genannter Schweineladen meinst Du?
Bitte warten ..
Mitglied: cjaugey
29.05.2008 um 11:33 Uhr
Hallo Biber,

gpupdate /target:computer /force /wait:0

hat leider nicht funktioniert ("computer" natürlich durch den richtigen Namen ersetzt).
(Am Rande: die Sicherheitsgruppe umfasst ALLE USER.)

Ich habe irgendwo noch was von "Richtlinienergebnissatz" gelesen. Kann es hiermit noch etwas zu tun haben?

Cyril
Bitte warten ..
Mitglied: cjaugey
04.06.2008 um 16:24 Uhr
Hallo,

ich habe jetzt eine (zwar nicht perfekt, aber zumindest vorerst akzeptable) Lösung des Problems.
Das Skript sieht jetzt so aus:

01.
'********************************************************************************** 
02.
' Set Environment Variables 
03.
'********************************************************************************* 
04.
Set WSHNetwork = WScript.CreateObject("WScript.Network") 
05.
Set WSHShell = WScript.CreateObject("WScript.Shell")  
06.
 
07.
On Error Resume Next  
08.
 
09.
Domain = WSHNetwork.UserDomain 
10.
UserName = ""  
11.
 
12.
While UserName = ""  
13.
	UserName = WSHNetwork.UserName  
14.
	MyGroups = GetGroups(Domain, UserName) Wend 
15.
 
16.
'********************************************************************************* 
17.
' Main Process: 
18.
'********************************************************************************* 
19.
GrpMeb UserName 
20.
Wscript.Quit  
21.
 
22.
'********************************************************************************* 
23.
'Function: GetGroups 
24.
'********************************************************************************* 
25.
Function GetGroups(Domain, UserName)  
26.
	Set objUser = GetObject("WinNT://" & Domain & "/" & UserName)  
27.
	GetGroups=""  
28.
	For Each objGroup In objUser.Groups  
29.
		GetGroups=GetGroups & "[" & UCase(objGroup.Name) & "]"  
30.
	Next 
31.
End Function  
32.
 
33.
'******************************************************************************** 
34.
'Function: InGroup 
35.
'******************************************************************************** 
36.
Function InGroup(strGroup)  
37.
	InGroup=False  
38.
	If InStr(MyGroups,"[" & UCase(strGroup) & "]") Then  
39.
		InGroup=True  
40.
	End If 
41.
End Function  
42.
 
43.
'******************************************************************************** 
44.
'Map Drives: 
45.
'******************************************************************************** 
46.
Sub GrpMeb(UNAME) 
47.
 
48.
Set oNetworkDrives = WSHNetwork.EnumNetworkDrives For i=0 to oNetworkDrives.Count -1 Step 2 
49.
	Rem WScript.Echo i & " - " & oNetworkDrives.Item(i) 
50.
	If oNetworkDrives.Item(i) <> "P:" AND Right(oNetworkDrives.Item(i),1) = ":" Then 
51.
		WSHNetwork.RemoveNetworkDrive oNetworkDrives.Item(i), TRUE 
52.
		WScript.Sleep (1000) 
53.
	End If 
54.
Next 
55.
 
56.
If INGROUP ("NAMESICHERHEITSGRUPPE") Then 
57.
	WSHNetwork.MapNetworkDrive "R:","\\SERVERNAME\ORDNER_1", TRUE 
58.
	WScript.Sleep (1000) 
59.
	WSHNetwork.MapNetworkDrive "S:","\\SERVERNAME\ORDNER_2", TRUE 
60.
	WScript.Sleep (1000) 
61.
End If 
62.
 
63.
 
64.
'******************************************************************************** 
65.
'Map Printer: 
66.
'******************************************************************************** 
67.
If INGROUP ("NAMESICHERHEITSGRUPPE") Then 
68.
	WSHNetwork.AddWindowsPrinterConnection "\\SERVERNAME\DRUCKER_3_NEU" 
69.
	WScript.Sleep (1000) 
70.
	WSHNetwork.AddWindowsPrinterConnection "\\SERVERNAME\DRUCKER_1" 
71.
	WScript.Sleep (1000)	 
72.
	WSHNetwork.AddWindowsPrinterConnection "\\SERVERNAME\DRUCKER_2" 
73.
	WScript.Sleep (1000) 
74.
End If 
75.
 
76.
End Sub
Danke nochmal für die Hilfe,
Cyril
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Server
gelöst Serverumzug SBS 2003 nach 2012R2 ohne Active Directory (2)

Frage von step777 zum Thema Windows Server ...

Exchange Server
gelöst SBS 2003 und Multisendcon: Mailversand an t-online Adressen funktioniert nicht (11)

Frage von danieluk15 zum Thema Exchange Server ...

Windows Netzwerk
Windows Server 2003 SBS Netzwerk durch neuen Server Ersetzen (9)

Frage von MultiStorm zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...