Hallo,
das wollter ich nicht, in Rätseln schreiben. Das Skript verbindet die Rechner mit der DS und noch ein paar Sachen. Die Verbindungen werden aber leider als Gast gemacht warum auch immer, Benutzername und PW sind auch enthalten. Die DSM Softwarte ist 5.0 -4482. Und zu den Häckchen, bei den Benutzern und auch bei den freigegebenen Orrdner sind die Häckchen richtig angeklickt. Schreib mal das Skript hinten ran, find kein Anhang einfügen den eben so:
OPTION EXPLICIT
Const UsrName = "Uwe"
Const UsrPassw = "*********"
' Const UsrName = ""
' Const UsrPassw = ""
'Variable-Konstanten
'-----------------------------------
Const COMPANY_NAME = "Weiss der Geier.de"
Const SERVER_AMC_ADDRESS = "00-11-32-20-2D-30"
Const SERVER_IP_ADDRESS = "192.168.0.10"
Const SERVER_SHARE = "\\Server\Dateien"
Const SERVER_MUSIK = "\\Server\Music"
Const SERVER_DOWNLOADS = "\\Server\Downloads"
Const TestZeit = 30 ' Anzahle der Sekunden, bis Netzwerk verbunden ist und ggf. Fehlermeldung kommt
'Variable-Objekte mit Instanziierung
'-----------------------------------
Dim WshShell : Set WshShell = CreateObject("WScript.Shell")
Dim WshNetWork : Set WshNetWork = CreateObject("WScript.Network")
Dim ProgramDict : Set ProgramDict = CreateObject("Scripting.Dictionary")
Dim NetworkDriveSet : Set NetworkDriveSet = wshNetwork.EnumNetworkDrives
Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject")
'Variable-Zeichenketten
'-----------------------------------
Dim DefaultPrinter
Dim DirPath
Dim MyComputer
Dim MyName
Dim MyWorkPlace
Dim Msg
Dim ProfilePath
Dim ProgramName
Dim ProgramPath
Dim StartZeit
Dim Lw, NP, StandardDrucker
Dim Txt, Tst, errTst, LwFehlt
'Variable-Integer
'-----------------------------------
Dim i
'Dictionary-Objekt füllen
'-----------------------------------
ProgramDict.Add "PStart.exe", "C:\Batch\Utilities\PStart.exe"
ProgramDict.Add "FIREFOX.exe", "C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"
ProgramDict.Add "Thunderbird.exe", "C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe"
' ProgramDict.Add "DSynchronize.exe", "C:\Batch\Utilities\DSynchronize\DSynchronize.exe"
' ProgramDict.Add "Miranda32.exe", "B:\Tools\Miranda\App\miranda\Miranda32.exe"
Dim LogDatei : LogDatei = WScript.ScriptFullName & ".log"
LogDatei = WScript.ScriptFullName & "-" & WshNetwork.ComputerName & "-.log"
LogDatei = WScript.ScriptFullName & "-" & WshNetwork.UserName & "-.log"
LogDatei = WScript.ScriptFullName & ".log"
' Trace32Log "", 0 ' erstellt neue LogDatei
Trace32Log " ", 1 ' fügt Leerzeile in LogDatei ein
' Programme überprüfen ggf. starten
'---------------------------------
Trace32Log "066 :: Programme prüfen und ggf. starten . . .", 1
For Each ProgramName In ProgramDict
ProgramPath = ProgramDict.Item(ProgramName)
Trace32Log "069 :: '" & ProgramPath & "' prüfen . . .", 1
If CheckProcess(ProgramName) Then
Msg = Msg & ProgramName & vbCRLF & " " & ProgramPath & vbCRLF & vbTab & "läuft (bereits)" & vbCRLF
' MsgBox ProgramName & vbCRLF & ProgramPath & vbCRLF & "läuft (bereits)"
Trace32Log "074 :: '" & ProgramPath & "' läuft.", 1
Else
Trace32Log "076 :: '" & ProgramPath & "' läuft nicht und wird ggf. gestartet . . .", 1
If fso.FileExists(ProgramPath) then
Trace32Log "078 :: '" & ProgramPath & "' wird gestartet . . .", 1
WshShell.Run """" & ProgramPath & """", 0, False
Tst = err.Number & " - " & err.Description
Trace32Log "081 :: '" & ProgramPath & "' wurde gestartet. " & Tst, 2
Msg = Msg & ProgramName & vbCRLF & " " & ProgramPath & vbCRLF & vbTab & "lief nicht und wurde gestartet" & vbCRLF
' MsgBox ProgramName & vbCRLF & ProgramPath & vbCRLF & "lief nicht und wurde gestartet"
Else
Trace32Log "085 :: '" & ProgramPath & "' fehlt - wird also nicht gestartet.", 2
Msg = Msg & ProgramName & vbCRLF & " " & ProgramPath & vbCRLF & vbTab & "läuft nicht und existiert nicht" & vbCRLF
' MsgBox ProgramName & vbCRLF & ProgramPath & vbCRLF & "läuft nicht und existiert nicht"
End If
End If
Next
Set ProgramDict = Nothing
Trace32Log "092 :: Programme wurden geprüft und ggf. gestartet.", 1
' Arbeitsplatz umbenennen
' -----------------------------------
MyComputer = WshNetwork.ComputerName
MyName = WshNetwork.UserName
MyWorkplace = MyName + " auf " + MyComputer
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\", MyWorkplace
Trace32Log "101 :: 'Arbeistplatz' wurde umbenannt nach '" & MyWorkplace & "'", 1
' Server wecken (hier kommmt kurz ein schwarzs DOS-Fenster)
' und auf Erreichbarkeit warten
'---------------------------------
StartZeit = Timer()
Trace32Log "107 :: Erreichbarkeit des Servers prüfen und ggf. Wecken (" & SERVER_AMC_ADDRESS & ", " & SERVER_IP_ADDRESS & ") . . .", 1
Do
If WMIpingOK( SERVER_IP_ADDRESS ) = True Then ' Server erreichbar
Trace32Log "110 :: " & SERVER_IP_ADDRESS & " ist erreichbar.", 1
Exit Do
End If
If Timer() - StartZeit > TestZeit Then ' Testzeit abgelaufen
Trace32Log "115 :: Server Erreichbarkeitstest werden nach " & TestZeit & "s erfolglos beendet.", 3
Exit Do
End If
'Call ExecHiddenPlus("C:\Batch\Wake.exe 00-11-32-20-2D-30" & SERVER_IP_ADDRESS)
Trace32Log "120 :: WoL starten . . . ", 1
Call ExecHiddenPlus("C:\Batch\Utilities\Wolcmd.exe " & SERVER_AMC_ADDRESS & " 192.168.0.10 255.255.255.0 9")
Trace32Log "122 :: WoL ist gestartet.", 1
Tst = 2 : Trace32Log "124 :: " & Tst & "s (von "& TestZeit & "s) warten . . .", 1 : WScript.Sleep Tst * 1000
Loop
Trace32Log "126 :: Ping - Erreichbarkeit des Servers prüfen ist beendet.", 1
' Msg = vbCrLf & _
Msg = "Nach " & Timer() - StartZeit & "Sekunden:" & vbCrLf & _
"Anmeldeergebnisse" & vbCrLf & vbCrLf & _
"Benutzername" & Chr(9) & "= " & WshNetwork.UserName & vbCrLf & _
"Computername" & Chr(9) & "= " & WshNetwork.ComputerName & vbCrLf
' Download-Verzeichnis festlegen
'-----------------------------------
DirPath = "C:\Users\Uwe\Downloads" 'Basisverzeichnis
Trace32Log "139 :: Basisverzeichnis gesetzt auf " & DirPath & " (weil Server-Freigabe NICHT erreichbar ist).", 1
' Server ist geweckt; testen ob die Freigaben verbunden werden können
'---------------------------------
Trace32Log "144 :: Erreichbarkeit der Server-Freigaben prüfen . . .", 1
StartZeit = Timer()
Do
LwFehlt = False
' Netzlaufwerk prüfen ggf. verbinden
'-----------------------------------
Lw = "Z:" : NP = SERVER_SHARE
If Fso.DriveExists(Lw) Then
Trace32Log "152 :: " & Lw & " ist bereits verbunden mit " & NP, 1
Else
On Error Resume Next
WshNetwork.MapNetWorkDrive Lw, NP, False, UsrName, UsrPassw
errTst = err.Number & " - " & err.Description
On Error Goto 0
If Len( errTst ) > 4 Then
Trace32Log "159 :: " & Lw & " konnte NICHT (neu) verbunden mit " & NP & "; " & errTst, 3
LwFehlt = True
Else
Trace32Log "162 :: " & Lw & " (neu) verbunden mit " & NP, 1
End If
End If
' Netzlaufwerk prüfen ggf. verbinden
'-----------------------------------
Lw = "O:" : NP = SERVER_DOWNLOADS
If Fso.DriveExists(Lw) Then
Trace32Log "170 :: " & Lw & " ist bereits verbunden mit " & NP, 1
Tst = True
Else
On Error Resume Next
WshNetwork.MapNetWorkDrive Lw, NP, False, UsrName, UsrPassw
errTst = err.Number & " - " & err.Description
On Error Goto 0
If Len( errTst ) > 4 Then
Trace32Log "178 :: " & Lw & " konnte NICHT (neu) verbunden mit " & NP & "; " & errTst, 3
LwFehlt = True
Else
Trace32Log "181 :: " & Lw & " (neu) verbunden mit " & NP, 1
End If
End If
' Netzlaufwerk prüfen ggf. verbinden
'-----------------------------------
Lw = "M:" : NP = SERVER_MUSIK
If Fso.DriveExists(Lw) Then
Trace32Log "189 :: " & Lw & " ist bereits verbunden mit " & NP, 1
Else
On Error Resume Next
WshNetwork.MapNetWorkDrive Lw, NP, False, UsrName, UsrPassw
errTst = err.Number & " - " & err.Description
On Error Goto 0
If Len( errTst ) > 4 Then
Trace32Log "196 :: " & Lw & " konnte NICHT (neu) verbunden mit " & NP & "; " & errTst, 3
LwFehlt = True
Else
Trace32Log "199 :: " & Lw & " (neu) verbunden mit " & NP, 1
End If
End If
' alle Netzlaufwerke . . .
'-----------------------------------
If LwFehlt = True Then '
Trace32Log "207 :: NICHT alle Lw. konnten verbunden werden bzw. sind verbunden", 2
Else
Trace32Log "209 :: ALLE Lw. konnten verbunden werden bzw. sind verbunden", 1
Tst = 0
On Error Resume Next
Tst = fso.GetFolder( Lw ).SubFolders.Count
On Error Goto 0
errTst = err.Number & " - " & err.Description
Trace32Log "215 :: " & Lw & " enthält " & Tst & " Verzeichnisse (" & errTst & ")", 1
If Tst > 0 Then ' mehr als 'keine' Unterverzeichnisse
DirPath = "O:" 'Basisverzeichnis wenn Netz vorhanden
'-----------------------------------
Trace32Log "219 :: Basisverzeichnis gesetzt auf " & DirPath & " (weil Server-Freigabe erreichbar ist). " & errTst, 1
Else
Trace32Log "221 :: Basisverzeichnis (bleibt): " & DirPath & "; " & errTst, 1
End If
Exit Do
End If
' Server erreichbar?
'-----------------------------------
If WMIpingOK( SERVER_IP_ADDRESS ) = True Then ' Server (weiterhin) erreichbar
Trace32Log "230 :: " & SERVER_IP_ADDRESS & " ist erreichbar", 3
Else ' Server nicht (mehr) erreichbar
Trace32Log "232 :: " & SERVER_IP_ADDRESS & " ist nicht erreichbar - Erreichbarkeit der Server-Freigabe wird NICHT geprüft!", 2
Exit Do
End If
' Zeit abgelaufen
'-----------------------------------
If Timer() - StartZeit > TestZeit Then ' Testzeit abgelaufen
Trace32Log "240 :: Laufwerke verbinden wird nach " & TestZeit & "s erfolglos beendet.", 3
Exit Do
End If