Hallo zusammen!
Ich habe ein kleines Problem...
Ich habe mir ein kleines vbScript zusammengestellt, welches remote tasks erstellt die dann einen Befehl zur angegebenen Zeit ausführt.
Jetzt habe ich jedoch das Problem, dass der Task nicht ausgeführt wird,
wenn kein Benutzer angemeldet ist.
An was könnte das liegen da der Task unter NT ATHORITÄT\SYSTEM läuft
und der Haken bei "nur ausführen wenn angemeldet" fehlt.
Danke für jede Hilfe :D !
Hier noch der Code falls Ihn jemanden interessiert...
Dim objController, objRemote, objFSO
Dim objComplist, objLogwrite, strComputer
Dim strTime, strCmd
'==============================================================================
Do until strTime <> ""
strTime = CStr (InputBox ("Bitte geben sie im Format <HHMMSS> an, " _
& vbCrLf & _
"wann der Service ausgeführt werden soll. " & vbCrLf & _
vbCrLf & _
"e.g. '123000' startet den Service um 12:30 " & vbCrLf & _
"ist die eingegebene Zeit schon verstrichen, " & vbCrLf & _
"wird der Service am nächsten Tag um diese Zeit ausgeführt."))
If strTime = "" then
strMsgBox = CInt (MsgBox ("Möchten Sie das Script verlassen?", _
vbYesNo + vbDefaultButton2, "remote execute script"))
End If
If strMsgBox = 6 Then
WScript.Quit (0)
Else
WScript.Echo "Sie haben " & strTime & " eingegeben."
End If
Loop
Do until strCmd <> ""
strCmd = CStr (InputBox ("Bitte geben Sie den " & vbCrLf & _
"auszuführenden Befehl an."))
If strCmd = "" then
strMsgBox = CInt (MsgBox ("Möchten Sie das Script verlassen?", _
vbYesNo + vbDefaultButton2, "remote execute script"))
End If
If strMsgBox = 6 Then
WScript.Quit (0)
Else
WScript.Echo "Sie haben " & strCmd & " eingegeben."
End If
Loop
Const ForReading = 1
Set objController = CreateObject("WshController")
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Lesen der zu verarbeitenden Computer
Set objComplist = objFSO.OpenTextFile("computers.txt", ForReading)
'Erstellen des Logfiles
Set objLogwrite = objFSO.CreateTextFile("Log.txt", True)
Do until objComplist.AtEndOfStream
'Das Script wird verteilt
On Error Resume Next
strComputer = objComplist.ReadLine
objLogwrite.WriteLine strComputer & ": Verarbeitung beginnt... " & Now
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objService = objLocator.ConnectServer(strComputer, "root\cimv2")
'Set oLastError = CreateObject("WbemScripting.SWbemLastError")
If Err <> 0 Then
objLogwrite.WriteLine strComputer & ": Fehler! " & Err.Description
Exit Do
End If
Set objNewJob = objService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create _
(strCmd, "********" & strTime & ".000000+120", _
, , , , JobID)
Select Case errJobCreated
Case "0" objLogwrite.WriteLine strComputer & ": Der Task wurde erfolgreich erstellt"
Case "1" objLogwrite.WriteLine strComputer & ": Der Task konnte nicht erstellt werden!"
Case "2" objLogwrite.WriteLine strComputer & ": Der Benutzer hat nicht genügend Rechte!"
Case "8" objLogwrite.WriteLine strComputer & ": Interaktiver Prozess."
Case "9" objLogwrite.WriteLine strComputer & ": Das Serviceskript konnte nicht gefunden werden"
Case "21" objLogwrite.WriteLine strComputer & ": Falsche Parameter übergeben!"
Case "22" objLogwrite.WriteLine strComputer & ": Das Benutzerkonto unter dem der Service läuft, " & vbCrLf & _
"hat nicht genügend Rechte oder ist ungültig!"
'Case Else objLogwrite.WriteLine strComputer & ": Fehler bei der Task erstellung!"
End Select
objLogwrite.WriteLine strComputer & ": Verarbeitung abgeschlossen! " & Now
Loop
objComplist.Close
objLogwrite.Close
WScript.Echo "Script ausgeführt, für Details lesen " & vbCrLf & _
"Sie bitte das Logfile."