Anmeldeskript mit Darstellung im Anmeldedialog "Kurztext"
Anmeldeskript mit mehreren Aufgaben (mappen von Netzlaufwerken, trennen von Netzlaufwerken, verbinden von Netzdruckern mit Darstellung für den Benutzer im Anmeldedialog von Windows - Sinn: Laden bis zum Schluß der Einstellungen und GPO`s
Hallo,
Ich suche ein Anmeldeskript. Irgendwie funktioniert es bei mir nicht wie ich es haben will. Es soll wie folgt aussehen (Ich übersetze das zunächst mal hier mal auf Deutsch, mein Versuch ? siehe unten):
Zuerst meine Daten:
Windows 2003 Server Enterprise (Einrichtung einer Domäne, DNS, DHCP, FileServer), Computername: "Server"
14 Clients mit Windows XP Pro, Servergespeicherte Profile
Das will ich in ein Skript umwandeln:
Falls eine Anmeldung mit "Tester" vorgenommen wird dann
- Zeige folgenden Text im Windows Anmeldefenster: "Netzlaufwerke werden eingerichtet..."
Net use E:\Server\Tester$
Net Use F:\Server\Zentral$
Net Use G:\Server\blabla$
- Zeige folgenden Text im Windows Anmeldevorgang: "Netzdrucker werden bereitgestellt..."
Net Use Server\HP_Laser_Jet$
- Zeige folgenden Text im Windows Anmeldevorgang: "Erforderliche Einstellungen werden eingerichtet"
Kopiere Lokale Einstellungen von \\Server\Users$\Local\Tester in
C:\Dokumente und Einstellungen\Tester
- Zeige folgenden Text im Windows Anmeldevorgang: "Ich wünsche Ihnen ein angenehmes Arbeiten"
Ende
_______________________________________________________________________
Meine Vorstellung:
Rem {Anmeldescript}
Sub Main
If GetCurrentUser = "Tester" Then
Else
statusHandle&=OpenStatusWindow("Windows Anmeldung läuft. Bitte einen Moment Geduld...")
Pause
Rem Erstelle Netzlaufwerke für den Benutzer "Tester"
statusHandle&=OpenStatusWindow(GetLocalText "Netzlaufwerke werden eingerichtet... Einen Moment Geduld bitte?")
net use e: \\Server\Tester$ /persistent:no
net use f: \\Server\Zentral$ /persistent:no
net use h: \\Server\Eingegangen$ /persistent:no
Pause
Rem Erstelle zentralen Netzdrucker...
statusHandle&=OpenStatusWindow("Netzdrucker werden eingerichtet...")
%Server%\netlogon\con2prt /c "\\Server\HP_Laser_Jet
statusHandle&=OpenStatusWindow(GetLocalText "Ich wünsche ein angenehmes Arbeiten...")
Rem Schließe das Statusfenster zum Abschluß
CloseStatusWnd (statusHandle)
End If
End Sub
______________________________________________________________________
Was mache ich falsch? Das läuft nicht, auch so nicht, der bringt dann immer eine Fehlermeldung von wegen falscher Parameter. In meinem "Versuch" fehlt auch das kopieren der "lokalen Einstellungen" auf den Server (Abmeldung) und das zurückkopieren im Anmeldeskript auf die lokale Festplatte...
Habt ihr verstanden was ich möchte?
Wenn nein, dann fragt...
Ich wär vielleicht auch dankbar, wenn mir jemand ein Musterskript geben kann, was meine Wünsche beinhaltet.... damit ich es in die Tat umsetzen kann
Danke schon mal im Voraus...
Gruß
Stefan
Hallo,
Ich suche ein Anmeldeskript. Irgendwie funktioniert es bei mir nicht wie ich es haben will. Es soll wie folgt aussehen (Ich übersetze das zunächst mal hier mal auf Deutsch, mein Versuch ? siehe unten):
Zuerst meine Daten:
Windows 2003 Server Enterprise (Einrichtung einer Domäne, DNS, DHCP, FileServer), Computername: "Server"
14 Clients mit Windows XP Pro, Servergespeicherte Profile
Das will ich in ein Skript umwandeln:
Falls eine Anmeldung mit "Tester" vorgenommen wird dann
- Zeige folgenden Text im Windows Anmeldefenster: "Netzlaufwerke werden eingerichtet..."
Net use E:\Server\Tester$
Net Use F:\Server\Zentral$
Net Use G:\Server\blabla$
- Zeige folgenden Text im Windows Anmeldevorgang: "Netzdrucker werden bereitgestellt..."
Net Use Server\HP_Laser_Jet$
- Zeige folgenden Text im Windows Anmeldevorgang: "Erforderliche Einstellungen werden eingerichtet"
Kopiere Lokale Einstellungen von \\Server\Users$\Local\Tester in
C:\Dokumente und Einstellungen\Tester
- Zeige folgenden Text im Windows Anmeldevorgang: "Ich wünsche Ihnen ein angenehmes Arbeiten"
Ende
_______________________________________________________________________
Meine Vorstellung:
Rem {Anmeldescript}
Sub Main
If GetCurrentUser = "Tester" Then
Else
statusHandle&=OpenStatusWindow("Windows Anmeldung läuft. Bitte einen Moment Geduld...")
Pause
Rem Erstelle Netzlaufwerke für den Benutzer "Tester"
statusHandle&=OpenStatusWindow(GetLocalText "Netzlaufwerke werden eingerichtet... Einen Moment Geduld bitte?")
net use e: \\Server\Tester$ /persistent:no
net use f: \\Server\Zentral$ /persistent:no
net use h: \\Server\Eingegangen$ /persistent:no
Pause
Rem Erstelle zentralen Netzdrucker...
statusHandle&=OpenStatusWindow("Netzdrucker werden eingerichtet...")
%Server%\netlogon\con2prt /c "\\Server\HP_Laser_Jet
statusHandle&=OpenStatusWindow(GetLocalText "Ich wünsche ein angenehmes Arbeiten...")
Rem Schließe das Statusfenster zum Abschluß
CloseStatusWnd (statusHandle)
End If
End Sub
______________________________________________________________________
Was mache ich falsch? Das läuft nicht, auch so nicht, der bringt dann immer eine Fehlermeldung von wegen falscher Parameter. In meinem "Versuch" fehlt auch das kopieren der "lokalen Einstellungen" auf den Server (Abmeldung) und das zurückkopieren im Anmeldeskript auf die lokale Festplatte...
Habt ihr verstanden was ich möchte?
Wenn nein, dann fragt...
Ich wär vielleicht auch dankbar, wenn mir jemand ein Musterskript geben kann, was meine Wünsche beinhaltet.... damit ich es in die Tat umsetzen kann
Danke schon mal im Voraus...
Gruß
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 11085
Url: https://administrator.de/forum/anmeldeskript-mit-darstellung-im-anmeldedialog-kurztext-11085.html
Ausgedruckt am: 25.12.2024 um 07:12 Uhr
10 Kommentare
Neuester Kommentar
Also genau das was du willst ist es nicht, aber es soll ja auch eigenes Denken gefördert werden
Ich habe das mal gebaut weil ich glaubte meine User umfassend informieren zu müssen.
Ist aber leider gar nicht so gut angekommen
Es macht nichts anderes als Netzlaufwerke und -drucker zu trennen und wieder zu verbinden.
Zum Schluß gibt es eine formtierte Auflistung der Ergebnisse als selbstschließendes Popup (10 s) aus.
Die Zeitsynchronisation ist eigentlich nicht erforderlich; die Clients synchronisieren automatisch die Zeit mit dem DC.
' #####BOF#####
' logon.vbs
' #############
Option Explicit
On Error Resume Next
Dim WSHNetwork, WSHShell, CRLF, objArgs, strMsg, Company, i, colDrives
Dim colPrinters, UserName, LogonSRV, Domain, nReturnCode, nSecondsToWait
CRLF = Chr(13) & Chr(10)
LogonSRV = "DerDomänencontroller"
Set WSHNetwork = Wscript.CreateObject("WScript.Network")
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set objArgs = Wscript.Arguments
' ----------------------------------------------------------
' Synchronisieren der Zeit mit dem Domänenkontoller
nReturnCode = wshShell.Run("net time \\" & LogonSRV & " /set /yes", 0, TRUE)
If (nReturnCode <> 0) Then
MsgBox "Es war nicht möglich die lokale Uhrzeit zu synchronisieren." & vbNewLine &_
"Bitte melden Sie sich beim System-Administrator.",48,"Logon Script Fehler"
Else
strMsg = "Zeitsynchronisation mit """ & LogonSRV & """ erfolgreich" & CRLF & CRLF
End If
' ----------------------------------------------------------
' Einrichten der Netzlaufwerke
Company = "Firmenname"
Domain = WSHNetwork.Userdomain
UserName = ""
Do While UserName = ""
UserName = WSHNetwork.UserName
Loop
WSHNetwork.RemoveNetworkDrive "P:"
WSHNetwork.RemoveNetworkDrive "U:"
WSHNetwork.MapNetworkDrive "P:", "\\" & LogonSRV & "\share"
WSHNetwork.MapNetworkDrive "U:", "\\" & LogonSRV & "\home\" & Username
WSHNetwork.RemovePrinterConnection "Drucker1"
WSHNetwork.AddWindowsPrinterConnection "\\" & LogonSRV & "\Drucker1"
Set colDrives = WSHNetwork.EnumNetworkDrives
Set colPrinters = WSHNetwork.EnumPrinterConnections
' ----------------------------------------------------------
' Überschrift
' "UserDomain" & Chr(9) & "= " & Domain & _
strMsg = strMsg & CRLF & "Anmelde Ergebnisse" & CRLF & CRLF & _
"Benutzername" & Chr(9) & "= " & UserName & CRLF & "Computername" & Chr(9) & "= " & _
WSHNetwork.ComputerName & CRLF & "Domäne" & Chr(9) & Chr (9) & "= " & Domain & CRLF
' ----------------------------------------------------------
' Anzeigen der erfolgreich verbunden Laufwerke
If colDrives.Count = 0 Then
strMsg = strMsg & CRLF & "Kein Netzlaufwerk ist verbunden." & CRLF
Else
strMsg = strMsg & CRLF & "Verbundene Netzlaufwerk(e):" & CRLF
For i = 0 To colDrives.Count - 1 Step 2
strMsg = strMsg & CRLF & colDrives(i) & Chr(9) & colDrives(i + 1)
Next
End If
' ----------------------------------------------------------
' Anzeigen der erfolgreich verbunden Drucker
If colPrinters.Count = 0 Then
strMsg = strMsg & CRLF & CRLF & "Kein Netzwerk-Drucker ist verbunden." & CRLF
Else
strMsg = strMsg & CRLF & CRLF & "Verbundene Netzwerk-Drucker:" & CRLF
For i = 0 To colPrinters.Count - 1 Step 2
strMsg = strMsg & CRLF & colPrinters(i) & Chr(9) & colPrinters(i + 1)
Next
End If
Function zeit
' FormatDateTime formatiert das Datum als langes Datumsformat.
zeit = "Systemzeit: " & Chr(9) & FormatDateTime(Date, 1) & " - " & FormatDateTime(Time, 4)
End Function
WshShell.PopUp zeit & CRLF & CRLF & strMsg,10, " " & Username &"@" & Company, 64
Set WSHNetwork = Nothing
Set WSHShell = Nothing
Set objArgs = Nothing
Set colDrives = Nothing
Set colPrinters = Nothing
' #####EOF#####
Ich habe das mal gebaut weil ich glaubte meine User umfassend informieren zu müssen.
Ist aber leider gar nicht so gut angekommen
Es macht nichts anderes als Netzlaufwerke und -drucker zu trennen und wieder zu verbinden.
Zum Schluß gibt es eine formtierte Auflistung der Ergebnisse als selbstschließendes Popup (10 s) aus.
Die Zeitsynchronisation ist eigentlich nicht erforderlich; die Clients synchronisieren automatisch die Zeit mit dem DC.
' #####BOF#####
' logon.vbs
' #############
Option Explicit
On Error Resume Next
Dim WSHNetwork, WSHShell, CRLF, objArgs, strMsg, Company, i, colDrives
Dim colPrinters, UserName, LogonSRV, Domain, nReturnCode, nSecondsToWait
CRLF = Chr(13) & Chr(10)
LogonSRV = "DerDomänencontroller"
Set WSHNetwork = Wscript.CreateObject("WScript.Network")
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set objArgs = Wscript.Arguments
' ----------------------------------------------------------
' Synchronisieren der Zeit mit dem Domänenkontoller
nReturnCode = wshShell.Run("net time \\" & LogonSRV & " /set /yes", 0, TRUE)
If (nReturnCode <> 0) Then
MsgBox "Es war nicht möglich die lokale Uhrzeit zu synchronisieren." & vbNewLine &_
"Bitte melden Sie sich beim System-Administrator.",48,"Logon Script Fehler"
Else
strMsg = "Zeitsynchronisation mit """ & LogonSRV & """ erfolgreich" & CRLF & CRLF
End If
' ----------------------------------------------------------
' Einrichten der Netzlaufwerke
Company = "Firmenname"
Domain = WSHNetwork.Userdomain
UserName = ""
Do While UserName = ""
UserName = WSHNetwork.UserName
Loop
WSHNetwork.RemoveNetworkDrive "P:"
WSHNetwork.RemoveNetworkDrive "U:"
WSHNetwork.MapNetworkDrive "P:", "\\" & LogonSRV & "\share"
WSHNetwork.MapNetworkDrive "U:", "\\" & LogonSRV & "\home\" & Username
WSHNetwork.RemovePrinterConnection "Drucker1"
WSHNetwork.AddWindowsPrinterConnection "\\" & LogonSRV & "\Drucker1"
Set colDrives = WSHNetwork.EnumNetworkDrives
Set colPrinters = WSHNetwork.EnumPrinterConnections
' ----------------------------------------------------------
' Überschrift
' "UserDomain" & Chr(9) & "= " & Domain & _
strMsg = strMsg & CRLF & "Anmelde Ergebnisse" & CRLF & CRLF & _
"Benutzername" & Chr(9) & "= " & UserName & CRLF & "Computername" & Chr(9) & "= " & _
WSHNetwork.ComputerName & CRLF & "Domäne" & Chr(9) & Chr (9) & "= " & Domain & CRLF
' ----------------------------------------------------------
' Anzeigen der erfolgreich verbunden Laufwerke
If colDrives.Count = 0 Then
strMsg = strMsg & CRLF & "Kein Netzlaufwerk ist verbunden." & CRLF
Else
strMsg = strMsg & CRLF & "Verbundene Netzlaufwerk(e):" & CRLF
For i = 0 To colDrives.Count - 1 Step 2
strMsg = strMsg & CRLF & colDrives(i) & Chr(9) & colDrives(i + 1)
Next
End If
' ----------------------------------------------------------
' Anzeigen der erfolgreich verbunden Drucker
If colPrinters.Count = 0 Then
strMsg = strMsg & CRLF & CRLF & "Kein Netzwerk-Drucker ist verbunden." & CRLF
Else
strMsg = strMsg & CRLF & CRLF & "Verbundene Netzwerk-Drucker:" & CRLF
For i = 0 To colPrinters.Count - 1 Step 2
strMsg = strMsg & CRLF & colPrinters(i) & Chr(9) & colPrinters(i + 1)
Next
End If
Function zeit
' FormatDateTime formatiert das Datum als langes Datumsformat.
zeit = "Systemzeit: " & Chr(9) & FormatDateTime(Date, 1) & " - " & FormatDateTime(Time, 4)
End Function
WshShell.PopUp zeit & CRLF & CRLF & strMsg,10, " " & Username &"@" & Company, 64
Set WSHNetwork = Nothing
Set WSHShell = Nothing
Set objArgs = Nothing
Set colDrives = Nothing
Set colPrinters = Nothing
' #####EOF#####
Wenn du die Zeile 'On Error Resume Next' auskommentierst siehst du wo es kracht.
D.h. es kommt eine MessageBox die sagt, in welcher Zeile bei welchem Zeichen welcher Fehler aufgetreten ist.
Die Zeitsynchronisation würde ich auskommentieren (jeder Zeile ein ' voranstellen), da sie nicht benötigt wird und außerdem der User das Recht dazu braucht.
Manöverkritik:
- Heißt dein DC 'DerDomänencontroller'?
- Wo hast du das Objekt 'Home' generiert? Es existiert nicht, was nicht existiert kann man nicht verwenden.
- Die Variable 'Tester' ist nicht deklariert.
~~~~~~~~~~~~~~~~~~~~~~~~
Die einzigen Angaben, die du an dem Script hättest verändern müssen, wären
a) die Belegung der Variablen LogonSRV sofern dein DC nicht DerDomänencontroller heißt
b) die Bezeichnungen von 'share', 'home' und 'Drucker1' sowie der gemappten Laufwerksbuchstaben 'P:' und 'U:'sofern diese bei dir anders lauten
c) die Auskommentierung der 7 Zeilen zwischen nReturnCode und End If falls der User nicht das Recht zum Ändern der Systemzeit hat.
d) die Belegung der Variablen Company mit deinem Firmennamen. Das passt
~~~~~~~~~~~~~~~~~~~~~~~~
Ich habe es eben in einer Domäne nochmal ausprobiert, bei mir funktioniert es.
D.h. es kommt eine MessageBox die sagt, in welcher Zeile bei welchem Zeichen welcher Fehler aufgetreten ist.
Die Zeitsynchronisation würde ich auskommentieren (jeder Zeile ein ' voranstellen), da sie nicht benötigt wird und außerdem der User das Recht dazu braucht.
Manöverkritik:
- Heißt dein DC 'DerDomänencontroller'?
- Wo hast du das Objekt 'Home' generiert? Es existiert nicht, was nicht existiert kann man nicht verwenden.
- Die Variable 'Tester' ist nicht deklariert.
~~~~~~~~~~~~~~~~~~~~~~~~
Die einzigen Angaben, die du an dem Script hättest verändern müssen, wären
a) die Belegung der Variablen LogonSRV sofern dein DC nicht DerDomänencontroller heißt
b) die Bezeichnungen von 'share', 'home' und 'Drucker1' sowie der gemappten Laufwerksbuchstaben 'P:' und 'U:'sofern diese bei dir anders lauten
c) die Auskommentierung der 7 Zeilen zwischen nReturnCode und End If falls der User nicht das Recht zum Ändern der Systemzeit hat.
d) die Belegung der Variablen Company mit deinem Firmennamen. Das passt
~~~~~~~~~~~~~~~~~~~~~~~~
Ich habe es eben in einer Domäne nochmal ausprobiert, bei mir funktioniert es.