hunduster
Goto Top

Problem mit VBS Login Druckerverbindung

Hallo zusammen,

wir sind in der Firma gerade dabei ein neues Loginscrip in VBS zu schreiben. Soweit läuft auch alles nur 2 Scripte nicht. Wir wollen das beim Login alle Drucker getrennt und danach neu verbunden werden. Wenn wir die einzelnen VBS Scripte nun einzeln abspeichern dann laufen diese auch allerding nicht wenn wir alles in ein Script packen. Nur die Drucker Scripte laufen nicht wenn wir alles in ein großes Script packen! Könnt ihr und einen Tipp geben?

' *   Description:	This script configures the standard settings for domain computers  
' *  
' ********************************************  

On Error Resume Next

' *** Initialze objects ***  
Set WSHNetwork = WScript.CreateObject("WScript.Network")  
Set WSHShell = WScript.CreateObject("WScript.Shell")  
Set WSHFso = WScript.CreateObject("Scripting.FileSystemObject")  
Set MSIE = WScript.CreateObject("InternetExplorer.Application")  
Set MailMSIE = WScript.CreateObject("InternetExplorer.Application")  
Set FileSystem = CreateObject("Scripting.FileSystemObject")  
Set fs = CreateObject("Scripting.filesystemobject")  
Set net = CreateObject("WScript.Network")  


' *** Get environment information ***  
OS 				= WSHShell.ExpandEnvironmentStrings("%OS%")  
WINDIR 				= WSHShell.ExpandEnvironmentStrings("%WINDIR%")  
PROGRAMDIR 			= WSHShell.ExpandEnvironmentStrings("%ProgramFiles%")  
USERPROFILE 			= WSHShell.ExpandEnvironmentStrings("%USERPROFILE%")  
GatewayIP 			= ""  
WSHVer 				= WScript.Version
WORKSTATION 			= WSHNetwork.ComputerName
USERDOMAIN 			= WSHNetwork.UserDomain
USERDNSDOMAIN 			= WSHShell.ExpandEnvironmentStrings("%USERDNSDOMAIN%")  
LOGONSERVER			= LCase(WSHShell.ExpandEnvironmentStrings("%LOGONSERVER%") & "." & USERDNSDOMAIN)  
LOGONSERVER_NFQDNS 		= LCase(WSHShell.ExpandEnvironmentStrings("%LOGONSERVER%")) '*** NOT Ffull qualified DNS (=WINS-Notation "\\Servername") ***  
NETLOGON_DIR 			= WSHShell.ExpandEnvironmentStrings("%LOGONSERVER%") + "\NETLOGON\"  

While USERNAME = ""  
	USERNAME = WSHNetwork.UserName		' Wird solange ausgeführt, bis der User ermittelt ist.  
Wend


' *** IE-Ausgabe vorbereiten ***  
SetupMSIE()	' IE einstellen für das Anzeige Fenster.  

'*** Ausgabe Logo  
MSIE.Document.Write "<HTML><TITLE>" & USERDOMAIN & " Domain-Initialisierung für Benutzer " & UCase(USERNAME) & "</TITLE>" &_  
		    "<BODY bgcolor=#ffffff>" &_  
		    "<FONT FACE=ARIAL size='-1'>" &_  
		    "<table><tr><td align='left'><IMG SRC='" & NETLOGON_DIR & "images\logos\logo.bmp' WIDTH='50%'></td></tr></table><BR>" &_  
		    "<HR>"  

' *** Ausgabe Willkommensmeldung  
Welcome()

' *** Synchronisation der Systemzeit ***  
TimeSync()

' *** Laufwerke verbinden***  
MSIE.Document.Write "<BR>- Verbinden der Netzlaufwerke"  
fs = CreateObject("Scripting.filesystemobject")  
net = CreateObject("WScript.Network")  

' *** Löschen der Druckerverbindungen ***  
MSIE.Document.Write "<BR>- Trennen der Drucker"  
WSHNetwork = WScript.CreateObject
WshNetwork.RemovePrinterConnection

' *** Herstellen der Druckerverbindungen ***  
MSIE.Document.Write "<BR>- Verbinden der Drucker"  
WSHNetwork = WScript.CreateObject
WshNetwork.AddWindowsPrinterConnection

' *** Standard-Drucker definieren  
MSIE.Document.Write "<BR>- Definition des Standard-Druckers "  
WSHNetwork = WScript.CreateObject
WSHNetwork.SetDefaultPrinter(DefaultPrinter)

' *** Fehlerbehandlung ***  
MSIE.Document.Write "<HR>"  
If NErr = 0 Then
	' *** Keine Fehler aufgetreten ***  
	MSIE.Document.Write "Die Domain-Initialsierung für " & USERNAME & " wurde erfolgreich abgeschlossen."  
Else
	MSIE.Document.Write "<script language='javascript'>alert('Während der Domain-Initialisierung sind Fehler aufgetretten. Bitte informieren Sie Ihren Administrator.');</script>"  
	MailBetreff = "Admin-Alert Fehler"  
	MailText = "Fehler: " & NErr  
	SendMail AdminMailAccount,MailBetreff,MailText
End If

MSIE.Document.Write "</p></FONT></BODY></HTML>"  
WScript.Sleep(10000) 	' *** Warten, damit Ausgabe gelesen werden kann ***  
MSIE.Quit		' *** Fenster zu! ***  
WScript.Quit		' *** Ende des Domain-Initialisierungs-Scripts ***  


' **************************************************************************  
' *************************** Functions and Subs ***************************  
' **************************************************************************  


' **********************************************  
' * Funktion:		Sub Welcome  
' * Beschreibung:	Gibt die Willkommensmeldung aus.  
' * Parameter:		<keine>  
' * Rückgabe:		<keine>  
' **********************************************  
Sub Welcome()
	On Error Resume Next
	
	MSIE.Document.Write "<B>Guten "  
	
	If Hour(Now) < 12 Then
		MSIE.Document.Write "Morgen"  
	ElseIf Hour(Now) < 17 Then
		MSIE.Document.Write "Tag"  
	Else
		MSIE.Document.Write "Abend"  
	End If
	
	MSIE.Document.Write " " & UCase(USERNAME) & " und willkommen in " & UCase(USERDOMAIN) & "!</B>"  

	MSIE.Document.Write "<p>Ihr Logon-Server ist " & UCase(LOGONSERVER) & ".</p>"  

	If Err.Number <> 0 Then
		Err.Clear
	End If
End Sub


' **********************************************  
' * Funktion:		Sub SetupMSIE  
' * Beschreibung:	Bereitet das Internet-Explorer-Fenster für die   
' *			Ausgabe während der Ausführung des Login-Scripts vor  
' * Parameter:		<keine>  
' * Rückgabe:		<keine>  
' **********************************************  
Sub SetupMSIE()
	On Error Resume Next
	MSIE.Navigate "About:Blank"  
	MSIE.ToolBar = False
	MSIE.StatusBar = False
	MSIE.Resizable = False
	MSIE.Center = True
	
	Do
	Loop While MSIE.Busy

	SWidth = MSIE.Document.ParentWindow.Screen.AvailWidth
	SHeight = MSIE.Document.ParentWindow.Screen.AvailHeight
	MSIE.Width = SWidth * 0.5
	MSIE.Height = SHeight * 0.8
	MSIE.Left = (SWidth - MSIE.Width)/2
	MSIE.Top = (SHeight - MSIE.Height)/2

	MSIE.Visible = True

	If Err.Number <> 0 Then
		Err.Clear
	End If
End Sub

' **********************************************  
' * Funktion:		Remove Printer  
' * Beschreibung:	Entfernt alle Drucker  
' * Rückgabe:		<keine>  
' **********************************************  

Set WSHNetwork = WScript.CreateObject("WScript.Network")  
On Error Resume Next
	PrinterPath = "\\192.168.0.21\RICOH2018D"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	PrinterPath = "\\192.168.0.21\HP1320NOG1l"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	PrinterPath = "\\192.168.0.21\HP1320NOG2r"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	PrinterPath = "\\192.168.0.21\hp2800"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	If Err.Number <> 0 Then
		Err.Clear
	End If


' **********************************************  
' * Funktion:		Map Printer  
' * Beschreibung:	Mapped Alle Drucker und definiert Standard  
' * Rückgabe:		<keine>  
' **********************************************  

Set WSHNetwork = WScript.CreateObject("WScript.Network")  
On Error Resume Next
	WshNetwork.AddWindowsPrinterConnection "\\192.168.0.21\RICOH2018D"  
	WshNetwork.AddWindowsPrinterConnection "\\192.168.0.21\HP1320NOG1l"  
	WshNetwork.AddWindowsPrinterConnection "\\192.168.0.21\HP1320NOG2r"  
	WshNetwork.AddWindowsPrinterConnection "\\192.168.0.21\hp2800"  
	WSHNetwork.SetDefaultPrinter "\\192.168.0.21\RICOH2018D"  
	If Err.Number <> 0 Then
		Err.Clear
	End If
	
' **********************************************  
' * Funktion:		Sub MapDrive  
' * Beschreibung:	Mapped Netzlaufwerke  
' * Rückgabe:		<keine>  
' **********************************************  
Set fs = CreateObject("Scripting.filesystemobject")  
Set net = CreateObject("WScript.Network")  
On Error Resume Next

If fs.driveExists("X:\") Then net.RemoveNetworkDrive "X:",True,True  
net.MapNetworkDrive "X:", "\\192.168.0.24\mxcshare"  

' **********************************************  
' * Funktion:		Sub TimeSync  
' * Beschreibung:	Synchronisiert die Systemzeit mit dem Timeserver  
' * Parameter:		<keine>  
' * Rückgabe:		<keine>  
' **********************************************  
Sub TimeSync()
	'On Error Resume Next  
	MSIE.Document.Write "<p>Synchronisation der Systemzeit</p>"  
	WSHShell.Run "w32tm.exe /resync", 0  
End Sub

Content-Key: 68069

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

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

Member: bastla
bastla Sep 06, 2007 at 14:26:47 (UTC)
Goto Top
Hallo Hunduster!

Das Problem sind die jeweiligen Zeilen
WSHNetwork = WScript.CreateObject
Eigentlich wird ja in * Initialze objects * schon das "WSHNetwork"-Objekt erzeugt - also die fraglichen Zeilen einfach entfernen und dieses Objekt verwenden (übrigens kann auch für das Mappen der Laufwerke das "net"-Objekt durch das "WSHNetwork"-Objekt ersetzt werden).

Und wenn Du schon beim Aufräumen bist, könntest Du ein einziges "FileSystemObject" (egal ob "WSHFso" oder "FileSystem" oder "fs") durchgängig im gesamten Script verwenden und auch noch die überflüssige Zeile
Set MailMSIE = WScript.CreateObject("InternetExplorer.Application")  
einstampfen ...

Grüße
bastla
Member: Hunduster
Hunduster Sep 07, 2007 at 06:43:28 (UTC)
Goto Top
Danke für den Tipp. Ich habe nun alle überflüssigen Einträge entfernt doch leider klappt das noch immer nicht mit den Druckern. mein Script sieht nun folgendermaßen aus:
' *   Description:	This script configures the standard settings for domain computers  
' *  
' ********************************************  

On Error Resume Next

' *** Initialze objects ***  
Set WSHNetwork = WScript.CreateObject("WScript.Network")  
Set WSHShell = WScript.CreateObject("WScript.Shell")  
Set WSHFso = WScript.CreateObject("Scripting.FileSystemObject")  
Set MSIE = WScript.CreateObject("InternetExplorer.Application")  
Set FileSystem = CreateObject("Scripting.FileSystemObject")  
Set fs = CreateObject("Scripting.filesystemobject")  
Set net = CreateObject("WScript.Network")  


' *** Get environment information ***  
OS 				= WSHShell.ExpandEnvironmentStrings("%OS%")  
WINDIR 				= WSHShell.ExpandEnvironmentStrings("%WINDIR%")  
PROGRAMDIR 			= WSHShell.ExpandEnvironmentStrings("%ProgramFiles%")  
USERPROFILE 			= WSHShell.ExpandEnvironmentStrings("%USERPROFILE%")  
GatewayIP 			= ""  
WSHVer 				= WScript.Version
WORKSTATION 			= WSHNetwork.ComputerName
USERDOMAIN 			= WSHNetwork.UserDomain
USERDNSDOMAIN 			= WSHShell.ExpandEnvironmentStrings("%USERDNSDOMAIN%")  
LOGONSERVER			= LCase(WSHShell.ExpandEnvironmentStrings("%LOGONSERVER%") & "." & USERDNSDOMAIN)  
LOGONSERVER_NFQDNS 		= LCase(WSHShell.ExpandEnvironmentStrings("%LOGONSERVER%")) '*** NOT Ffull qualified DNS (=WINS-Notation "\\Servername") ***  
NETLOGON_DIR 			= WSHShell.ExpandEnvironmentStrings("%LOGONSERVER%") + "\NETLOGON\"  

While USERNAME = ""  
	USERNAME = WSHNetwork.UserName		' Wird solange ausgeführt, bis der User ermittelt ist.  
Wend


' *** IE-Ausgabe vorbereiten ***  
SetupMSIE()	' IE einstellen für das Anzeige Fenster.  

'*** Ausgabe Logo  
MSIE.Document.Write "<HTML><TITLE>" & USERDOMAIN & " Domain-Initialisierung für Benutzer " & UCase(USERNAME) & "</TITLE>" &_  
		    "<BODY bgcolor=#ffffff>" &_  
		    "<FONT FACE=ARIAL size='-1'>" &_  
		    "<table><tr><td align='left'><IMG SRC='" & NETLOGON_DIR & "images\logos\logo.bmp' WIDTH='50%'></td></tr></table><BR>" &_  
		    "<HR>"  

' *** Ausgabe Willkommensmeldung  
Welcome()

' *** Synchronisation der Systemzeit ***  
TimeSync()

' *** Laufwerke verbinden***  
MSIE.Document.Write "<BR>- Verbinden der Netzlaufwerke"  


' *** Löschen der Druckerverbindungen ***  
MSIE.Document.Write "<BR>- Trennen der Drucker"  


' *** Herstellen der Druckerverbindungen ***  
MSIE.Document.Write "<BR>- Verbinden der Drucker"  


' *** Standard-Drucker definieren  
MSIE.Document.Write "<BR>- Definition des Standard-Druckers "  
WSHNetwork.SetDefaultPrinter(DefaultPrinter)

' *** Fehlerbehandlung ***  
MSIE.Document.Write "<HR>"  
If NErr = 0 Then
	' *** Keine Fehler aufgetreten ***  
	MSIE.Document.Write "Die Domain-Initialsierung für " & USERNAME & " wurde erfolgreich abgeschlossen."  
Else
	MSIE.Document.Write "<script language='javascript'>alert('Während der Domain-Initialisierung sind Fehler aufgetretten. Bitte informieren Sie Ihren Administrator.');</script>"  
	MailBetreff = "Admin-Alert Fehler"  
	MailText = "Fehler: " & NErr  
	SendMail AdminMailAccount,MailBetreff,MailText
End If

MSIE.Document.Write "</p></FONT></BODY></HTML>"  
WScript.Sleep(10000) 	' *** Warten, damit Ausgabe gelesen werden kann ***  
MSIE.Quit		' *** Fenster zu! ***  
WScript.Quit		' *** Ende des Domain-Initialisierungs-Scripts ***  


' **************************************************************************  
' *************************** Functions and Subs ***************************  
' **************************************************************************  


' **********************************************  
' * Funktion:		Sub Welcome  
' * Beschreibung:	Gibt die Willkommensmeldung aus.  
' * Parameter:		<keine>  
' * Rückgabe:		<keine>  
' **********************************************  
Sub Welcome()
	On Error Resume Next
	
	MSIE.Document.Write "<B>Guten "  
	
	If Hour(Now) < 12 Then
		MSIE.Document.Write "Morgen"  
	ElseIf Hour(Now) < 17 Then
		MSIE.Document.Write "Tag"  
	Else
		MSIE.Document.Write "Abend"  
	End If
	
	MSIE.Document.Write " " & UCase(USERNAME) & " und willkommen in " & UCase(USERDOMAIN) & "!</B>"  

	MSIE.Document.Write "<p>Ihr Logon-Server ist " & UCase(LOGONSERVER) & ".</p>"  

	If Err.Number <> 0 Then
		Err.Clear
	End If
End Sub


' **********************************************  
' * Funktion:		Sub SetupMSIE  
' * Beschreibung:	Bereitet das Internet-Explorer-Fenster für die   
' *			Ausgabe während der Ausführung des Login-Scripts vor  
' * Parameter:		<keine>  
' * Rückgabe:		<keine>  
' **********************************************  
Sub SetupMSIE()
	On Error Resume Next
	MSIE.Navigate "About:Blank"  
	MSIE.ToolBar = False
	MSIE.StatusBar = False
	MSIE.Resizable = False
	MSIE.Center = True
	
	Do
	Loop While MSIE.Busy

	SWidth = MSIE.Document.ParentWindow.Screen.AvailWidth
	SHeight = MSIE.Document.ParentWindow.Screen.AvailHeight
	MSIE.Width = SWidth * 0.5
	MSIE.Height = SHeight * 0.8
	MSIE.Left = (SWidth - MSIE.Width)/2
	MSIE.Top = (SHeight - MSIE.Height)/2

	MSIE.Visible = True

	If Err.Number <> 0 Then
		Err.Clear
	End If
End Sub

' **********************************************  
' * Funktion:		Remove Printer  
' * Beschreibung:	Entfernt alle Drucker  
' * Rückgabe:		<keine>  
' **********************************************  

On Error Resume Next
	PrinterPath = "\\192.168.0.21\RICOH2018D"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	PrinterPath = "\\192.168.0.21\HP1320NOG1l"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	PrinterPath = "\\192.168.0.21\HP1320NOG2r"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	PrinterPath = "\\192.168.0.21\hp2800"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	If Err.Number <> 0 Then
		Err.Clear
	End If


' **********************************************  
' * Funktion:		Map Printer  
' * Beschreibung:	Mapped Alle Drucker und definiert Standard  
' * Rückgabe:		<keine>  
' **********************************************  

On Error Resume Next
	WshNetwork.AddWindowsPrinterConnection "\\192.168.0.21\RICOH2018D"  
	WshNetwork.AddWindowsPrinterConnection "\\192.168.0.21\HP1320NOG1l"  
	WshNetwork.AddWindowsPrinterConnection "\\192.168.0.21\HP1320NOG2r"  
	WshNetwork.AddWindowsPrinterConnection "\\192.168.0.21\hp2800"  
	WSHNetwork.SetDefaultPrinter "\\192.168.0.21\RICOH2018D"  
	If Err.Number <> 0 Then
		Err.Clear
	End If
	
' **********************************************  
' * Funktion:		Sub MapDrive  
' * Beschreibung:	Mapped Netzlaufwerke  
' * Rückgabe:		<keine>  
' **********************************************  

On Error Resume Next

If fs.driveExists("X:\") Then net.RemoveNetworkDrive "X:",True,True  
net.MapNetworkDrive "X:", "\\192.168.0.24\mxcshare"  

' **********************************************  
' * Funktion:		Sub TimeSync  
' * Beschreibung:	Synchronisiert die Systemzeit mit dem Timeserver  
' * Parameter:		<keine>  
' * Rückgabe:		<keine>  
' **********************************************  
Sub TimeSync()
	'On Error Resume Next  
	MSIE.Document.Write "<p>Synchronisation der Systemzeit</p>"  
	WSHShell.Run "w32tm.exe /resync", 0  
End Sub
Member: bastla
bastla Sep 07, 2007 at 16:42:25 (UTC)
Goto Top
Hallo Hunduster!

Wenn in den Zeilen
' * Laufwerke verbinden*  
MSIE.Document.Write "<BR>- Verbinden der Netzlaufwerke"  


' * Löschen der Druckerverbindungen *  
MSIE.Document.Write "<BR>- Trennen der Drucker"  


' * Herstellen der Druckerverbindungen *  
MSIE.Document.Write "<BR>- Verbinden der Drucker"  
Dein Script nicht nur behauptete, dass das Eine oder Andere gerade durchgeführt würde, sondern die entsprechenden Aktionen durch Deklaration und Aufruf des jeweiligen Subs (etwa am Beispiel des Verbindens der Netzlaufwerke:
' * Laufwerke verbinden*  
MSIE.Document.Write "<BR>- Verbinden der Netzlaufwerke"  
MapNWDrives

...
...

Sub MapNWDrives()
' * Funktion: Sub MapDrive  
' * Beschreibung: Mapped Netzlaufwerke  
' * Rückgabe: <keine>  
'  

On Error Resume Next

If fs.driveExists("X:\") Then net.RemoveNetworkDrive "X:",True,True  
net.MapNetworkDrive "X:", "\\192.168.0.24\mxcshare"  
End Sub
tatsächlich erfolgten, könnte es vielleicht klappen (allerdings habe ich nur oberflächlich über den Code geschaut).
(Die diversen "FileSystemObject"-Zuweisungen sind übrigens immer noch vorhanden, was allerdings ebensowenig ursächlich für Dein Problem sein sollte wie die beiden "WScript.Network"-Objekte "WSHNetwork" und "net".)

Grüße
bastla
Member: Biber
Biber Sep 07, 2007 at 17:00:34 (UTC)
Goto Top
Moin Hunduster,

nur kurz Off Topic: ich habe Deine Skripts in < code > -Tags gesetzt.
Wie? Bitte schau es Dir mit "Editieren" an oder lies es in unseren "Häufigen Fragen" unter "Formatierungen" durch.

...länger wollte ich die Lösung gar nicht aufhalten...

Schönes Wochenende
Biber
Member: Hunduster
Hunduster Sep 13, 2007 at 09:36:51 (UTC)
Goto Top
So, nun läuft das Script und sieht folgendermaßen aus:

On Error Resume Next

' *** Initialze objects ***  
Set WSHNetwork = WScript.CreateObject("WScript.Network")  
Set WSHShell = WScript.CreateObject("WScript.Shell")  
Set objShell = CreateObject("Shell.Application")  
Set WSHFso = WScript.CreateObject("Scripting.FileSystemObject")  
Set MSIE = WScript.CreateObject("InternetExplorer.Application")  
Set FileSystem = CreateObject("Scripting.FileSystemObject")  
Set fs = CreateObject("Scripting.filesystemobject")  
Set net = CreateObject("WScript.Network")  


' *** Get environment information ***  
OS 						= WSHShell.ExpandEnvironmentStrings("%OS%")  
WINDIR 					= WSHShell.ExpandEnvironmentStrings("%WINDIR%")  
PROGRAMDIR 				= WSHShell.ExpandEnvironmentStrings("%ProgramFiles%")  
USERPROFILE 			= WSHShell.ExpandEnvironmentStrings("%USERPROFILE%")  
WSHVer 					= WScript.Version
WORKSTATION 			= WSHNetwork.ComputerName
USERDOMAIN 				= WSHNetwork.UserDomain
USERDNSDOMAIN 			= WSHShell.ExpandEnvironmentStrings("%USERDNSDOMAIN%")  
LOGONSERVER				= LCase(WSHShell.ExpandEnvironmentStrings("%LOGONSERVER%") & "." & USERDNSDOMAIN)  
LOGONSERVER_NFQDNS 		= LCase(WSHShell.ExpandEnvironmentStrings("%LOGONSERVER%")) '*** NOT Ffull qualified DNS (=WINS-Notation "\\Servername") ***  
NETLOGON_DIR 			= WSHShell.ExpandEnvironmentStrings("%LOGONSERVER%") + "\NETLOGON\"  

While USERNAME = ""  
	USERNAME = WSHNetwork.UserName		' Wird solange ausgeführt, bis der User ermittelt ist.  
Wend


' *** IE-Ausgabe vorbereiten ***  
SetupMSIE()	' IE einstellen für das Anzeige Fenster.  

'*** Ausgabe Logo  
MSIE.Document.Write "<HTML><TITLE>" & USERDOMAIN & " Domain-Initialisierung für " & UCase(USERNAME) & "</TITLE>" &_  
		    "<BODY bgcolor=#ffffff>" &_  
		    "<FONT FACE=ARIAL size='-1'>" &_  
		    "<table><tr><td align='left'><IMG SRC='" & NETLOGON_DIR & "images\logos\logo.bmp' WIDTH='50%'></td></tr></table><BR>" &_  
		    "<HR>"  

' *** Ausgabe Willkommensmeldung  
Welcome()


' **************************************************************************  
' *************************** Functions and Subs ***************************  
' **************************************************************************  


' **********************************************  
' * Funktion:		Sub Welcome  
' * Beschreibung:	Gibt die Willkommensmeldung aus.  
' * Parameter:		<keine>  
' * Rückgabe:		<keine>  
' **********************************************  
Sub Welcome()
	On Error Resume Next
	
	MSIE.Document.Write "<B>Guten "  
	
	If Hour(Now) < 12 Then
		MSIE.Document.Write "Morgen"  
	ElseIf Hour(Now) < 17 Then
		MSIE.Document.Write "Tag"  
	Else
		MSIE.Document.Write "Abend"  
	End If
	
	MSIE.Document.Write " " & UCase(USERNAME) & " und willkommen in " & UCase(USERDOMAIN) & "!</B>"  

	MSIE.Document.Write "<p>Ihr Logon-Server ist " & UCase(LOGONSERVER) & ".</p>"  

	If Err.Number <> 0 Then
		Err.Clear
	End If
End Sub


' **********************************************  
' * Funktion:		Remove Printer  
' * Beschreibung:	Entfernt alle Drucker  
' * Rückgabe:		<keine>  
' **********************************************  

' *** Löschen der Druckerverbindungen ***  
MSIE.Document.Write "<BR>- Trennen der Drucker..."  

On Error Resume Next
	PrinterPath = "\\printers.server.de\RICOH2018D"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	PrinterPath = "\\printers.server.de\HP1320NOG1l"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	PrinterPath = "\\printers.server.de\HP1320NOG2r"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	PrinterPath = "\\printers.server.de\hp2800"  
	WshNetwork.RemovePrinterConnection PrinterPath, true, true
	If Err.Number <> 0 Then
		Err.Clear
	End If
	
MSIE.Document.Write "<b><font color=#00FF00>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erfolgreich</font></b>"  

' **********************************************  
' * Funktion:		Map Printer  
' * Beschreibung:	Mapped Alle Drucker und definiert Standard  
' * Rückgabe:		<keine>  
' **********************************************  

' *** Herstellen der Druckerverbindungen ***  
MSIE.Document.Write "<BR>- Verbinden der Drucker..."  


On Error Resume Next
	WshNetwork.AddWindowsPrinterConnection "\\printers.server.de\RICOH2018D"  
	WshNetwork.AddWindowsPrinterConnection "\\printers.server.de\HP1320NOG1l"  
	WshNetwork.AddWindowsPrinterConnection "\\printers.server.de\HP1320NOG2r"  
	WshNetwork.AddWindowsPrinterConnection "\\printers.server.de\hp2800"  
	If Err.Number <> 0 Then
		Err.Clear
	End If
	
	MSIE.Document.Write "<b><font color=#00FF00>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erfolgreich</font></b>"  
	
	' *** Standard-Drucker definieren  
MSIE.Document.Write "<BR>- Definition des Standard-Druckers..."  
	
	WSHNetwork.SetDefaultPrinter "\\printers.server.de\RICOH2018D"  
	If Err.Number <> 0 Then
		Err.Clear
	End If
	
	MSIE.Document.Write "<b><font color=#00FF00>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erfolgreich</font></b>"  
	
	
' **********************************************  
' * Funktion:		Sub MapDrive  
' * Beschreibung:	Mapped Netzlaufwerke  
' * Rückgabe:		<keine>  
' **********************************************  

' *** Laufwerke verbinden***  
MSIE.Document.Write "<BR>- Verbinden der Netzlaufwerke..."  

On Error Resume Next

If fs.driveExists("X:\") Then net.RemoveNetworkDrive "X:",True,True  
net.MapNetworkDrive "X:", "\\fileserver.server.de\mxcshare"  
objShell.NameSpace("X:").Self.Name ="Fileserver"  
objShell.NameSpace("Z:").Self.Name =" User.Home "  

MSIE.Document.Write "<b><font color=#00FF00>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erfolgreich</font></b>"  

' **********************************************  
' * Funktion:		Sub TimeSync  
' * Beschreibung:	Synchronisiert die Systemzeit mit dem Timeserver  
' * Parameter:		<keine>  
' * Rückgabe:		<keine>  
' **********************************************  

' *** Synchronisation der Systemzeit ***  
TimeSync()

Sub TimeSync()
	'On Error Resume Next  
	MSIE.Document.Write "<BR>- Synchronisation der Systemzeit..."  
	WSHShell.Run "w32tm.exe /resync", 0  
End Sub
MSIE.Document.Write "<b><font color=#00FF00>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erfolgreich</font></b>"  

' **********************************************  
' * Funktion:		Sub SetupMSIE  
' * Beschreibung:	Bereitet das Internet-Explorer-Fenster für die   
' *			Ausgabe während der Ausführung des Login-Scripts vor  
' * Parameter:		<keine>  
' * Rückgabe:		<keine>  
' **********************************************  
Sub SetupMSIE()
	On Error Resume Next
	MSIE.Navigate "About:Blank"  
	MSIE.ToolBar = False
	MSIE.StatusBar = False
	MSIE.Resizable = False
	MSIE.Center = True
	
	Do
	Loop While MSIE.Busy

	SWidth = MSIE.Document.ParentWindow.Screen.AvailWidth
	SHeight = MSIE.Document.ParentWindow.Screen.AvailHeight
	MSIE.Width = SWidth * 0.5
	MSIE.Height = SHeight * 0.8
	MSIE.Left = (SWidth - MSIE.Width)/2
	MSIE.Top = (SHeight - MSIE.Height)/2

	MSIE.Visible = True

	If Err.Number <> 0 Then
		Err.Clear
	End If
End Sub

' *** Fehlerbehandlung ***  
MSIE.Document.Write "<HR>"  
If NErr = 0 Then
	' *** Keine Fehler aufgetreten ***  
	MSIE.Document.Write "Die Domain-Initialsierung für " & USERNAME & " wurde <b>erfolgreich</b> abgeschlossen. <br> <b>Unternehmen</b> wünscht einen schönen Tag."  
Else
	MSIE.Document.Write "<font color=#FF0000>Während der Domain-Initialisierung sind <b>Fehler</b> aufgetretten. Bitte informieren Sie Ihren Administrator.</font>"  
End If

MSIE.Document.Write "</p></FONT></BODY></HTML>"  
WScript.Sleep(10000) 	' *** Warten, damit Ausgabe gelesen werden kann ***  
MSIE.Quit		' *** Fenster zu! ***  
WScript.Quit		' *** Ende des Domain-Initialisierungs-Scripts ***  

Wir hatten uns intern erst darauf geeinigt, dass ein bsetimmter Drucker auf der ersten Etage bei allen Usern als Standard definiert wird. Nun möchte die Geschäftsführung aber, dass in dem Ausgabefenster des Script eine Dropdown Wahl erscheint, in der der User angibt auf welcher Etage er gerade sitzt (wir haben hier alle Notebooks und freie Platzwahl). Je nach dem, was der User dann angibt soll ein bestimmter Drucker als Standard gesetzt werden. Ist sowas überhaupt realisierbar in VBS???

Danke schonmal für Eure Hilfe!
Member: bastla
bastla Sep 13, 2007 at 10:44:17 (UTC)
Goto Top
Hallo Hunduster!

Ist sowas überhaupt realisierbar in VBS???
In reinem VBS nicht, aber da Ihr ja ohnehin schon DHTML verwendet, müsste sich eigentlich das folgende Beispiel (hier geklaut) integrieren lassen:
sStockwerk = SelectBox("Bitte Stockwerk wählen", Array("E", "1.", "2.", "3."))  
WScript.Echo sStockwerk

Function SelectBox(sTitle, aOptions)
Dim oIE, s, item
set oIE = CreateObject("InternetExplorer.Application")  
With oIE
	.FullScreen = True
	.ToolBar = False
	.RegisterAsDropTarget = False
	.StatusBar = False : .Navigate("about:blank")  
	Do Until .ReadyState = 4 : WScript.Sleep 100 : Loop
	.width= 400
	.height=200

	With .document
		With .parentWindow.screen
			oIE.left = (.availWidth - oIE.width ) \ 2
			oIE.top = (.availheight - oIE.height) \ 2
		End With

		s = "<html><head><title>" & sTitle _  
			& "</title></head><script language=vbs>bWait=true<" & "/script>" _  
			& "<body bgColor=Silver><center>" _  
			& "<b>" & sTitle & "<b><p>" _  
			& "<select id=entries size=1 style='width:325px'>" _  
			& " <option selected>" & sTitle & "</option>"  
		For Each item In aOptions
			s = s & " <option>" & item & "</option>"  
		Next
			s = s & " </select><p>" _  
			& "<button id=but0 onclick='bWait=false'>OK</button>" _  
			& "</center></body></html>"  
		.open
		.Write(s)
		.close
		Do Until .ReadyState ="complete" : Wscript.Sleep 50 : Loop  
		With .body
			.scroll="no"  
			.style.borderStyle = "outset"  
			.style.borderWidth = "3px"  
		End With
		.all.entries.focus
		oIE.Visible = True
		CreateObject("WScript.Shell").AppActivate sTitle  
		On Error Resume Next
		Do While .ParentWindow.bWait
			WScript.Sleep 100
			If oIE.Visible Then SelectBox = "Aborted"  
			If Err.Number <> 0 Then Exit Function
		Loop
		On Error Goto 0
		With .ParentWindow.Entries
			SelectBox = .Options(.SelectedIndex).Text
		End With
	End With
	.Visible = False
End With
End Function

Ähnlich: http://support.microsoft.com/kb/197959/de

Grüße
bastla
Member: Hunduster
Hunduster Sep 13, 2007 at 12:07:22 (UTC)
Goto Top
1000 Dank sieht schonmal sehr genial aus. Nun bin ich persönlich aber noch schwer am forschen, wie ich ihm sage das er je nach Auswahl des Users ein bestimmtes Script starten soll in meinem Fall dann die Standard Definierung des Druckers.
Member: bastla
bastla Sep 13, 2007 at 13:22:51 (UTC)
Goto Top
Hallo Hunduster!

Ohne Deinen Forscherdrang behindern zu wollen: Eigentlich musst Du ja nur den richtigen Druckerpfad in eine Variable schreiben, was sich per "Select Case" einigermaßen übersichtlich machen ließe - Beispiel:
Select Case sStockwerk
    Case "E"  
        Printerpath = "\\printers.server.de\RICOH2018D"  
    Case "1."  
        Printerpath = "\\printers.server.de\HP1320NOG1l"  
    ...
    ...
    Case Else
        'keine Etage gewählt ...  
        Printerpath = "\\printers.server.de\hp2800"  
End Select

WSHNetwork.SetDefaultPrinter Printerpath

Grüße
bastla
Member: Hunduster
Hunduster Sep 13, 2007 at 13:27:51 (UTC)
Goto Top
Sorry, bin Azubi (FISI) im ersten Lehrjahr und der einzigste in der ganzen Firma der den Ansatz von VBS versteht face-wink Werd mal probieren. bin dir echt dankbar!
Member: retz12
retz12 Jul 03, 2008 at 06:56:15 (UTC)
Goto Top
Hallo bastl,
Du kennst dich ziemlich gut mit VBS aus so wie ich es hier herauslese.
Ich bin von dem Script oben von Hunduster sehr begeister. Bin gerade dabei es für unsere Firma umzuschreiben. Bin aber neuling beim VBS Programmieren.
Ich möchte gerne das Script so umschreiben, dass sich die Drucker PC-bezogen mappen und auch ein bestimmter Standard Drucker eingerichtet wird.

Info:
PC1, PC2 soll Drucker 1 mappen
PC3, PC4, PC5 soll Drucker 2 und Drucker 3 mappen, wobei Drucker 2 als Standard eingerichtet werden soll.

Wie kann ich dies Lösen?
Ich bedanke mich schon für eure Antworten.
Member: retz12
retz12 Jul 27, 2008 at 19:21:42 (UTC)
Goto Top
es öffnet sich beim Anmelden ein Intern Explorer Fenster.
Kann man es irgendwie verhinder, dass user dieses Fenster schließen können.
Weiß nicht ob das Script fertig ausgeführt wird, wenn das Fenster frühzeitig geschlossen wurde!
Member: bastla
bastla Jul 28, 2008 at 07:19:53 (UTC)
Goto Top
Hallo retz12!

... Intern Explorer Fenster. Kann man es irgendwie verhinder, dass user dieses Fenster schließen können.
Diese Frage solltest Du besser in einem eigenen Thread stellen.

Grüße
bastla