none
Ejecutar achivo bat en equipo remoto usando PS-Tools RRS feed

  • Pregunta

  • Hola chicos!,

    Pues como dice el titulo, estoy tratando de ejecutar un archivo .bat en una maquina remota usando PS-Tools.

    Contexto:

    Tengo una aplicación(Operador) que manda la instrucción de matar el proceso de una aplicación que actualmente se ejecuta(uso pskill. exe) el cual funciona sin problemas. 

    Esta es la linea de código que uso para hace dicho proceso:

    Mata proceso

            string arguments = @"\\" + domain + " -u \"nocshecter\" -p 123456 \"programa.exe\"";
            Process close = new Process();
            close.StartInfo.FileName = "pskill.exe";
            close.StartInfo.Arguments = arguments;
            close.StartInfo.UseShellExecute = false;
            close.StartInfo.CreateNoWindow = true;
            close.Start();

    y al mismo tiempo ejecuto un segundo método que manda a llamar  aun archivo bat para abrir nuevamente la aplicación de cierto tiempo(uso psexec.exe) el cual no logro hacer que se ejecute remotamente en dicha maquina.

    Este es mi codigo:

    Ejecuta archivo .bat ubicado en cierta ruta

            yield return new WaitForSeconds( 3.5f );
            string batPath = @"\\" + domain + " -d -u \"nocschecter\" -p 123456 -i \"C:\\programa\\Herramientas\\Restart.bat\"";
            Process program = new Process();
            program.StartInfo.FileName = "psexec.exe";
            program.StartInfo.Arguments = batPath;
            program.StartInfo.UseShellExecute = false;
            program.StartInfo.CreateNoWindow = true;
            program.Start();

    Quiero mencionar que en un equipo de prueba este código ya funciona  pero al probarlos en otros equipo el .bat no se ejecuta(solo mata el proceso en ejecución).

    Tengo los dos equipos configurados de tal forma al de los equipos de pruebas(usuario, dominio, etc) sin embargo no funciona. 

    Alguien propria orientarme por si me falta algo mas? estoy usando PS-Tools.

    Muchas gracias!


    • Editado NocSchecter jueves, 31 de octubre de 2019 0:01 correcion
    jueves, 31 de octubre de 2019 0:00

Respuestas

  • hola

    Si inicias una ventana de DOS o quizas de PowerShell y ejecutas el comando

    psexec.exe \\domain -d -u "nocschecter" -p 123456 -i "C:\\programa\\Herramientas\\Restart.bat";

    funciona ? valida primero que ejecute remoto desde una consola antes de llevarlo a codigo

    Otra forma es ver si desde la clase Process puede redireccionar la salida estandar y ver si hay algun mensaje de error

    ProcessStartInfo.RedirectStandardOutput Property

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 31 de octubre de 2019 3:56
  • Hola Leandro,

    por el momento no tengo acceso al equipo al que quiero implementar la función. Sin embargo ya hice test creando dos maquinas virtuales y llamar el archivo .bat desde CMD el cual funciona perfectamente, incluso ya probé usando un router(manteniendo la misma configuración del equipo final) y también funciona. 

    Aun no logro comprender que provoca que el equipo final no logre encontrar la ruta para ejecutar el .bat.

    PD. Hice el procedimiento directamente en cmd ejecutando el .bat pero que llame a un archivo .bat y este funciona, incluso cuando mando a matar el proceso

    Saludos!

    jueves, 31 de octubre de 2019 22:08

Todas las respuestas

  • hola

    Si inicias una ventana de DOS o quizas de PowerShell y ejecutas el comando

    psexec.exe \\domain -d -u "nocschecter" -p 123456 -i "C:\\programa\\Herramientas\\Restart.bat";

    funciona ? valida primero que ejecute remoto desde una consola antes de llevarlo a codigo

    Otra forma es ver si desde la clase Process puede redireccionar la salida estandar y ver si hay algun mensaje de error

    ProcessStartInfo.RedirectStandardOutput Property

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 31 de octubre de 2019 3:56
  • Hola Leandro,

    por el momento no tengo acceso al equipo al que quiero implementar la función. Sin embargo ya hice test creando dos maquinas virtuales y llamar el archivo .bat desde CMD el cual funciona perfectamente, incluso ya probé usando un router(manteniendo la misma configuración del equipo final) y también funciona. 

    Aun no logro comprender que provoca que el equipo final no logre encontrar la ruta para ejecutar el .bat.

    PD. Hice el procedimiento directamente en cmd ejecutando el .bat pero que llame a un archivo .bat y este funciona, incluso cuando mando a matar el proceso

    Saludos!

    jueves, 31 de octubre de 2019 22:08