Prozess Remote starten

  • VBScript

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von p41n.

    Prozess Remote starten

    Hallo Zusammen,

    Ich komme hier an einer Stelle einfach nicht weiter. Ich hoffe, ihr könnt mir wieder so erfolgreich helfen, wie die letzten Male zuvor auch schon. :)

    Ich habe mir ein Script zusammen gestellt, welches remote einen Prozess starten soll. Lokal funktioniert alles reibungslos.
    Nur remote nicht. Das komische ist, dass er keine Fehlermeldung ausspuckt, wenn ich den Versuch remote starte.
    Laut dem Script scheint alles zu funktionieren. Nur auf dem Remoterechner sehe ich keinen Prozess, der eigentlich starten sollte.
    Meine Firewall habe ich bereits so konfiguriert, dass sie RPC (Port 135) zulässt. Mit dem Tool "wbemtest" kann ich mich auch erfolgreich mit dem Remoterechner verbinden.

    Hier der Code für die Remote Verbindung:

    Visual Basic-Quellcode

    1. Const SW_NORMAL = 1
    2. Const WbemAuthenticationLevelPktPrivacy = 6
    3. ' Konfiguration
    4. strComputer = "Ip-Adresse"
    5. strCommand = "c:\windows\system32\Notepad.exe"
    6. strUsername = "Administrator"
    7. strPassword = "Password"
    8. ' Verbindung zu WMI
    9. Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    10. Set objWMIService = objwbemLocator.ConnectServer(strComputer, "root\cimv2", strUsername, strPassword)
    11. objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
    12. ' Notepad so konfigurieren, dass ein Fenster gezeigt wird
    13. Set objStartup = objWMIService.Get("Win32_ProcessStartup")
    14. Set objConfig = objStartup.SpawnInstance_
    15. objConfig.ShowWindow = SW_NORMAL
    16. ' Notepad wird gestartet und ein Rückgabewert wird erstellt
    17. Set objProcess = objWMIService.Get("Win32_Process")
    18. intReturn = objProcess.Create _
    19. (strCommand, Null, objConfig, intProcessID)
    20. If intReturn <> 0 Then
    21. Wscript.Echo "Process could not be created." & _
    22. vbNewLine & "Command line: " & strCommand & _
    23. vbNewLine & "Return value: " & intReturn
    24. Else
    25. Wscript.Echo "Process created." & _
    26. vbNewLine & "Command line: " & strCommand & _
    27. vbNewLine & "Process ID: " & intProcessID
    28. End If


    Und hier der Code für die lokale Verbindung:

    Visual Basic-Quellcode

    1. Const SW_NORMAL = 1
    2. Const WbemAuthenticationLevelPktPrivacy = 6
    3. ' Konfiguration
    4. strComputer = "."
    5. strCommand = "c:\windows\system32\Notepad.exe"
    6. ' Verbindung zu WMI
    7. Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    8. Set objWMIService = objwbemLocator.ConnectServer(strComputer, "root\cimv2")
    9. objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
    10. ' Notepad so konfigurieren, dass ein Fenster gezeigt wird
    11. Set objStartup = objWMIService.Get("Win32_ProcessStartup")
    12. Set objConfig = objStartup.SpawnInstance_
    13. objConfig.ShowWindow = SW_NORMAL
    14. ' Notepad wird gestartet und ein Rückgabewert wird erstellt
    15. Set objProcess = objWMIService.Get("Win32_Process")
    16. intReturn = objProcess.Create _
    17. (strCommand, Null, objConfig, intProcessID)
    18. If intReturn <> 0 Then
    19. Wscript.Echo "Process could not be created." & _
    20. vbNewLine & "Command line: " & strCommand & _
    21. vbNewLine & "Return value: " & intReturn
    22. Else
    23. Wscript.Echo "Process created." & _
    24. vbNewLine & "Command line: " & strCommand & _
    25. vbNewLine & "Process ID: " & intProcessID
    26. End If



    Gruß p41n

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „p41n“ ()

    Da meine Idee nicht so recht funktionieren wollte, bin ich das Ganze nun etwas anders angegangen und habe es mit psexec realisiert.
    Für die, die es interessiert, der Code:

    Visual Basic-Quellcode

    1. 'Konfiguration
    2. strComputer = "IP-Adresse"
    3. strUsername = "Domain\Administrator"
    4. strPassword = "Password"
    5. strInstallFile = "File"
    6. StrInstallpath = "Path"
    7. 'Deklaration
    8. Set ObjShell = CreateObject("Wscript.shell")
    9. Set WshShell = WScript.CreateObject("WScript.Shell")
    10. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2", strUsername, strPassword)
    11. 'Zuerst wird die Datei kopiert und dann mit psexec.exe ausgeführt
    12. objShell.Run "%COMSPEC% /C COPY " & strInstallPath & "\" & strInstallFile & " \\" & strComputer & "\C$\Windows\temp", 0, TRUE
    13. objShell.Run "%COMSPEC% /C c:\windows\system32\psexec \\" & strComputer & " -u strUsername -p strPassword " & StrInstallpath & "\" & strInstallFile, 1, True

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „p41n“ ()