Dienste im Hintergrund starten/stoppen

  • moin ...
    ... ich bastel gerade an einer Anpassung für unsere PCs mit installierter VMware herum ...
    Es geht eigentlich "nur" darum, dass die VMware NICs und die entsprechenden Dienste erst bei Bedarf (start einer VM) aktiviert werden ...
    Das klappt schon ganz passabel ...
    Was mich stört ist nur, dass das die Konsole sich immer mit öffnet bei jeder Zeile des Scriptes ...
    Füge ich allerdings bei den Parametern ein "@SW_HIDE" mit ein, werden zwar die beiden NICs noch aktivert / deaktiviert, aber die Dienste nicht ...
    Das anchstehende script läuft also, nur will ich die Konsolenfenster ausblenden ...
    Vielleicht hat ja noch jemand eine Idee ...

    Spoiler anzeigen
    [autoit]

    If $CmdLine[0] = 0 Then
    MsgBox (16, "Fehler", "Kein Argument")
    Exit (1)
    EndIf
    Switch $CmdLine[1]
    Case "start"

    RunWait(@ComSpec & " /c " &'devcon enable @root\vmware\0000',"")
    RunWait(@ComSpec & " /c " &'devcon enable @root\vmware\0001',"")

    RunWait(@ComSpec & " /c " &'net start "VMware Agent Service"')
    RunWait(@ComSpec & " /c " &'net start "VMware Authorization Service"')
    RunWait(@ComSpec & " /c " &'net start "VMware DHCP Service"')
    RunWait(@ComSpec & " /c " &'net start "VMware NAT Service"')
    RunWait(@ComSpec & " /c " &'net start "VMware USB Arbitration Service"')
    RunWait(@ComSpec & " /c " &'net start "VMware Virtual Mount Manager Extended"')

    [/autoit] [autoit][/autoit] [autoit]

    Case "stop"

    RunWait(@ComSpec & " /c " &'net stop "VMware Virtual Mount Manager Extended"')
    RunWait(@ComSpec & " /c " &'net stop "VMware DHCP Service"')
    RunWait(@ComSpec & " /c " &'net stop "VMware NAT Service"')
    RunWait(@ComSpec & " /c " &'net stop "VMware USB Arbitration Service"')
    RunWait(@ComSpec & " /c " &'net stop "VMware Authorization Service"')
    RunWait(@ComSpec & " /c " &'net stop "VMware Agent Service"')

    RunWait(@ComSpec & " /c " &'devcon disable @root\vmware\0000',"")
    RunWait(@ComSpec & " /c " &'devcon disable @root\vmware\0001',"")

    Case Else
    MsgBox (16, "Fehler", _
    "Falsches Argument! Erwartet: { start | stop }")
    Exit (1)
    EndSwitch

    [/autoit]
  • Unter Umständen ist es einfacher und schneller, die Dienste über Autoit direkt zu stoppen und starten.

    Im Anhang findest Du 2 UDFs, mit denen dies möglich sein sollte.

  • Danke für den Tip ...
    Die ServiceControl.au3 ist schon fast geeignet für meine Zwecke ...
    Wenn ich allerdings alle sechs VMware-Dienste starten will, kommt es vor, dass das Script schon weiter macht, bevor der Dienst hochgefahren ist ...
    leider finde ich in der ServiceControl.au3 keine Option, um sicher zu stellen, dass das script erst weiter läuft, wenn der Dienst auch fertig gestartet ist ...
    naja ... vielleicht irgendwo in der ServiceControl2 ...

    Übrigens habe ich meinen Fehler im Script gefunden:
    Ich habe versehentlich die Zeilen (Bsp.)

    [autoit]

    RunWait(@ComSpec & " /c " &'net start "VMware Agent Service"')

    [/autoit]


    nur um

    [autoit]

    ,@SW_HIDE

    [/autoit]


    ergänzt ...
    da fehlte noch ein leerer Parameter ...
    so läuft's:

    [autoit]

    RunWait(@ComSpec & " /c " &'net start "VMware Agent Service"',"",@SW_HIDE)

    [/autoit]

    Dann sollte es doch so auch mit Admin-Rechten klappen, wenn man RunAsWait verwendet ...

    [autoit]

    RunAsWait("Administrator",@ComputerName,"passwort",0,@ComSpec & " /c " &'net start "VMware Agent Service"',"",@SW_HIDE)

    [/autoit]

    2 Mal editiert, zuletzt von elmuchacho (25. März 2010 um 13:11)