teddy81
Goto Top

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... face-wink

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 face-wink

Danke schon mal im Voraus...

Gruß
Stefan

Content-Key: 11085

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

Printed on: April 26, 2024 at 09:04 o'clock

Member: Teddy81
Teddy81 May 24, 2005 at 17:39:05 (UTC)
Goto Top
Ach und in welchem Dateityp muss ich das abspeichern? cmd, vbs?
Member: gemini
gemini May 24, 2005 at 17:59:04 (UTC)
Goto Top
Also genau das was du willst ist es nicht, aber es soll ja auch eigenes Denken gefördert werden face-wink

Ich habe das mal gebaut weil ich glaubte meine User umfassend informieren zu müssen.
Ist aber leider gar nicht so gut angekommen face-sad
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#####
Member: Teddy81
Teddy81 May 24, 2005 at 18:51:42 (UTC)
Goto Top
Irgendwie funktioniert das nicht! Naja muss ich wohl noch was rumtüfteln!
Member: gemini
gemini May 24, 2005 at 19:09:04 (UTC)
Goto Top
Wo hakts denn? Zeile? Zeichen?
Ist natürlich etwas aus dem Zusammenhang gerissen
Member: Teddy81
Teddy81 May 24, 2005 at 19:47:25 (UTC)
Goto Top
Er hängt sich während der Anmeldung auf...

Schau:

' #####BOF#####
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 \\" & Home & " /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 """ & Home & """ erfolgreich" & CRLF & CRLF
End If

' ----------------------------------------------------------
' Einrichten der Netzlaufwerke

Company = "Trebeß"
Domain = Home.Tester
UserName = "Tester"
Do While UserName = "Tester"
Tester = Home.Tester
Loop

Home.RemoveNetworkDrive "P:"
Home.RemoveNetworkDrive "U:"

Home.MapNetworkDrive "P:", "\\" & Home & "\Zentral"
Home.MapNetworkDrive "U:", "\\" & Home & "\Musik$"

Home.RemovePrinterConnection "HP_Drucker"

Home.AddWindowsPrinterConnection "\\" & Home & "\HP_Drucker"
Set colDrives = Home.EnumNetworkDrives
Set colPrinters = Home.EnumPrinterConnections

' ----------------------------------------------------------
' Überschrift
' "Tester" & Chr(9) & "= " & Home & _
strMsg = strMsg & CRLF & "Anmelde Ergebnisse" & CRLF & CRLF & _
"Tester" & Chr(9) & "= " & Tester & CRLF & "Stefan" & Chr(9) & "= " & _
Home.Stefan & CRLF & "home.local" & Chr(9) & Chr (9) & "= " & Home.local & 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 Home = Nothing
Set WSHShell = Nothing
Set objArgs = Nothing
Set colDrives = Nothing
Set colPrinters = Nothing
' #####EOF#####


Was hab ich falsch gemacht? Ist ein Testserver zunächst bis es läuft....
Member: gemini
gemini May 24, 2005 at 20:23:07 (UTC)
Goto Top
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 face-wink
~~~~~~~~~~~~~~~~~~~~~~~~

Ich habe es eben in einer Domäne nochmal ausprobiert, bei mir funktioniert es.
Member: Teddy81
Teddy81 May 25, 2005 at 05:59:38 (UTC)
Goto Top
Hi

"Also "DerDomänencontroller" hab ich erstetzt durch "home.local".

Domänencontroller = home.local
DNS Name = HOME
User = Tester

Werd ich nachher mal auskomentieren wenn ich Zuhause bin.

Danke face-wink

Gruß
Stefan
Member: gemini
gemini May 25, 2005 at 06:11:04 (UTC)
Goto Top
"DerDomänencontroller" hab
ich erstetzt durch "home.local".
Klingt mir eher nach einem Domänennamen.
Wenn der DC z.B. SRV01 heißt, wäre der FQDN (Fully aqualified domain name) SRV01.home.local
Die Angabe der Domain ist nicht nötig, da diese mit 'WSHNetwork.Userdomain' abgefragt wird.
Member: Teddy81
Teddy81 May 25, 2005 at 07:18:18 (UTC)
Goto Top
Ah stimmt Du hast recht face-wink
Member: Teddy81
Teddy81 May 25, 2005 at 14:23:12 (UTC)
Goto Top
Yuhuuuuuuu!!!!!!!! Es geht face-wink Naja zwar nicht so wie ich es mir vorgestellt hab aber es geht. Vielleicht hat ja noch jemand eine Lösung wie man den ganzen Ablauf in den Windows Anmelde - Vorgang Fenster bekommt...

Also in das Fenster wo steht Benutzereinstellungen werden geladen... usw...

Mit den Lokalen einstellungen hab ich einfach den Pfad in den Anwendungsdaten geändert und hab ihn "Einstellungen" genannt... Und der Ordner Anwenungsdaten wird ja bei einem Servergespeicherten Profil gesichert...