none
Programador de Tareas no ejecuta comandos internos del sistema RRS feed

  • Pregunta

  • Hola a todos me he encontrado con un problema que no he podido resolver a ver si me podéis ayudar.

    Estoy utilizando una serie de comandos para apagar remotamente unos equipos de la misma red en unos días determinados

    Este problema solo me sucede con el Windows Server 2012 estoy utilizando los mismos comandos en varios Windows Server 2008 R2 y funcionan sin ningún problema.

    Si lo ejecuto los comandos en un .bat funcionan correctamente pero no lo hacen si los trato de utilizar con el programador de tareas directamente.

    Script en .bat o en .exe

    @ echo off
    
    net use \\192.168.1.3 "Tu_Password" /User:Administrador
    
    shutdown.exe -m \\192.168.1.3 -s -t 600 -f
    
    net use \\192.168.1.3\IPC$ /delete
    

    Script en .xml preparado para ser importado directamente en el programador de tareas

    *La cuenta del administrador debe de estar activada en los equipos remotos.

    <?xml version="1.0" encoding="UTF-16"?>
    <Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
      <RegistrationInfo>
        <Date>2014-10-25T13:43:17.908431</Date>
        <Author>SRV-DCFS-01\Administrador</Author>
        <Description>Apagado los Lunes a las 9:00pm MSI-TPV-01 Automatico</Description>
      </RegistrationInfo>
      <Triggers>
        <CalendarTrigger>
          <StartBoundary>2014-10-25T20:00:00Z</StartBoundary>
          <Enabled>true</Enabled>
          <ScheduleByWeek>
            <DaysOfWeek>
              <Monday />
            </DaysOfWeek>
            <WeeksInterval>1</WeeksInterval>
          </ScheduleByWeek>
        </CalendarTrigger>
      </Triggers>
      <Principals>
        <Principal id="Author">
          <UserId>SRV-DCFS-01\Administrador</UserId>
          <LogonType>Password</LogonType>
          <RunLevel>HighestAvailable</RunLevel>
        </Principal>
      </Principals>
      <Settings>
        <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
        <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
        <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
        <AllowHardTerminate>true</AllowHardTerminate>
        <StartWhenAvailable>false</StartWhenAvailable>
        <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
        <IdleSettings>
          <StopOnIdleEnd>true</StopOnIdleEnd>
          <RestartOnIdle>false</RestartOnIdle>
        </IdleSettings>
        <AllowStartOnDemand>true</AllowStartOnDemand>
        <Enabled>true</Enabled>
        <Hidden>false</Hidden>
        <RunOnlyIfIdle>false</RunOnlyIfIdle>
        <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
        <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
        <WakeToRun>false</WakeToRun>
        <ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
        <Priority>7</Priority>
      </Settings>
      <Actions Context="Author">
        <Exec>
          <Command>C:\Windows\SysWOW64\net.exe</Command>
          <Arguments>use \\192.168.1.3 "tu_password" /User:Administrador</Arguments>
          <WorkingDirectory>C:\Windows\SysWOW64\</WorkingDirectory>
        </Exec>
        <Exec>
          <Command>C:\Windows\SysWOW64\shutdown.exe</Command>
          <Arguments>-m \\192.168.1.3 -s -t 600 -f</Arguments>
          <WorkingDirectory>C:\Windows\SysWOW64\</WorkingDirectory>
        </Exec>
        <Exec>
          <Command>C:\Windows\SysWOW64\net.exe</Command>
          <Arguments>use \\192.168.1.3\IPC$ /delete</Arguments>
          <WorkingDirectory>C:\Windows\SysWOW64\</WorkingDirectory>
        </Exec>
      </Actions>
    </Task>

    Me gustaría saber si a ustedes os funciona correctamente en el programador de tareas ó si es el windows o si estoy haciendo algo mal.

    Lo que yo noto es como si el programador de tareas ejecutase correctamente programas externos .exe ó .bat por ejemplo, pero si le indico comandos internos del propio Windows indicando sus rutas correctamente con sus modificadores etc... ni caso.

    Muchas Gracias.

    sábado, 25 de abril de 2015 12:43

Respuestas

  • Hola soporteredes muchisimas gracias por tu ayuda, me a sido muy útil, el problema estaba, en que no estaba marcando la opción dentro de los desencadenadores "Detener la tarea si se ejecuta durante mas de" Si estaba marcando esta misma opción dentro de la pestaña de configuración, que se supone que afecta a todos los desencadenadores que uno pueda tener en la tarea, y a todas las acciones, pero debe de haber algún bug en el Windows Server 2012 con esto , porque en los Server 2008 R2 esta opción no la tengo habilitada dentro de los desencadenadores sino solo en la pestaña configuración y funciona a la perfección.

    Pero tu ayuda me a servido para ver por donde podía venir el problema, mil gracias de nuevo.

    *Notas: no me ha sido necesario utilizar la opción "activar el equipo para ejecutar esta tarea" porque este equipo esta 24x7 encendido y si no es que esta en mantenimiento así que no me a sido necesario, y no afectaba al correcto funcionamiento una vez corregí el error.

    -Ademas te confirmo que en el historial no daba ninguna alerta cuando la tarea no se ejecutaba, al contrario daba un mensaje informativo, diciendo que se había ejecutado correctamente aunque no era así.

    Lo mas extraño es que la tarea funcionaba bien sin activar la opción "Detener la tarea si se ejecuta durante mas de" dentro de los desencadenadores al configurarla como "Ejecutar solo cuando el usuario haya iniciado sesión", pero no al ejecutarla como, "Ejecutar tanto si el usuario inicio sesión como si no" muy extraño.

    Dejo una copia del codigo lista para importar en el "Programador de Tareas" de windows con las opciones correctamente habilitadas:

    Copiar contenido en un archivo "con un nombre cualquiera.xml" y estará listo para ser importado, luego configurar las horas y dias de los apagados como se desee.

    <?xml version="1.0" encoding="UTF-16"?>
    <Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
      <RegistrationInfo>
        <Date>2015-04-25T13:43:17.908431</Date>
        <Author>SRV-DCFS-01\Administrador</Author>
        <Description>Apagado los Lunes a las 9:00pm MSI-TPV-01 Automatico</Description>
      </RegistrationInfo>
      <Triggers>
        <CalendarTrigger>
          <StartBoundary>2015-04-25T20:00:00Z</StartBoundary>
          <ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
          <Enabled>true</Enabled>
          <ScheduleByWeek>
            <DaysOfWeek>
              <Monday />
            </DaysOfWeek>
            <WeeksInterval>1</WeeksInterval>
          </ScheduleByWeek>
        </CalendarTrigger>
      </Triggers>
      <Principals>
        <Principal id="Author">
          <UserId>SRV-DCFS-01\Administrador</UserId>
          <LogonType>Password</LogonType>
          <RunLevel>HighestAvailable</RunLevel>
        </Principal>
      </Principals>
      <Settings>
        <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
        <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
        <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
        <AllowHardTerminate>true</AllowHardTerminate>
        <StartWhenAvailable>false</StartWhenAvailable>
        <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
        <IdleSettings>
          <StopOnIdleEnd>true</StopOnIdleEnd>
          <RestartOnIdle>false</RestartOnIdle>
        </IdleSettings>
        <AllowStartOnDemand>true</AllowStartOnDemand>
        <Enabled>true</Enabled>
        <Hidden>false</Hidden>
        <RunOnlyIfIdle>false</RunOnlyIfIdle>
        <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
        <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
        <WakeToRun>false</WakeToRun>
        <ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
        <Priority>7</Priority>
      </Settings>
      <Actions Context="Author">
        <Exec>
          <Command>C:\Windows\SysWOW64\net.exe</Command>
          <Arguments>use \\192.168.1.3 "el_password_del_equipo_remoto" /User:Administrador</Arguments>
          <WorkingDirectory>C:\Windows\SysWOW64\</WorkingDirectory>
        </Exec>
        <Exec>
          <Command>C:\Windows\SysWOW64\shutdown.exe</Command>
          <Arguments>-m \\192.168.1.3 -s -t 600 -f</Arguments>
          <WorkingDirectory>C:\Windows\SysWOW64\</WorkingDirectory>
        </Exec>
        <Exec>
          <Command>C:\Windows\SysWOW64\net.exe</Command>
          <Arguments>use \\192.168.1.3\IPC$ /delete</Arguments>
          <WorkingDirectory>C:\Windows\SysWOW64\</WorkingDirectory>
        </Exec>
      </Actions>
    </Task>
    Muchas gracias, ya quedo resuelto el problema.



    • Marcado como respuesta jccrojano domingo, 26 de abril de 2015 12:59
    • Editado jccrojano domingo, 26 de abril de 2015 13:11
    domingo, 26 de abril de 2015 12:55

Todas las respuestas

  • Ve a Administrar _Servicios y prueba habilitar que el servicio interactúe con el Escritorio.

    Si la opción te aparece atenuada revisa detén el servicio.

    sábado, 25 de abril de 2015 15:23
  • Hola lo primero muchas gracias por tu ayuda, pero debo de decir que no ha sido la solución, me costo bastante realizar el cambio tuve que hacerlo con permisos de system, y probar pero no funciono, realizando mas pruebas he conseguido que funcione realizando un cambio en la tarea programada pero sigue sin servirme como solución definitiva porque necesito que la tarea se ejecute correctamente en cualquier situación, solo espero que arroje luz sobre el problema que tengo, para tratar de solucionarlo.

    En las "propiedades" de la tarea, en la pestaña "General", si selecciono:

    -Ejecutar solo cuando el usuario haya iniciado sesión - la tarea funciona correctamente. (debo decir que la cuenta con la que inicio sesión, y desde la que estoy creando y ejecutando las pruebas es la cuenta del propio Administrador por lo tanto no entiendo porque sucede esto.)

    Si por el contrario selecciono:

    -Ejecutar tanto si el usuario inicio sesión como si no - (ya la tarea no funciona)

    [Aquí intente poner una captura pero el sistema no me deja hasta que microsoft valide mi cuenta en el foro]

    Al seleccionar esta modalidad se obliga a facilitar una cuenta local con permisos suficientes para ejecutar dicha tarea, aunque no se haya iniciado la sesión, yo estoy introduciendo la cuenta del Administrador, y su correspondiente contraseña la cual almacena correctamente, pero la tarea no se ejecuta.

    Por lo tanto supongo que pueda ser algún limite que tiene la cuenta del administrador local quizas al ejecutar el comando net.exe, o quizás sea alguna directiva de seguridad que afecte a utilizar el comando net.exe si esta seleccionada la tarea en la opción "Ejecutar tanto si el usuario inicio sesión como si no", no lo se, o simplemente un bug como una catederal.

    Pero digo esto porque para comprobar si funcionaba correctamente los permisos del administrador he creado una tarea en la que obligo al propio servidor a ejecutar el comando "C:\Windows\SysWOW64\shutdown.exe -r -t 600" para reiniciarse a si mismo con la opción marcada en "Ejecutar tanto si el usuario inicio sesión como si no" y almacenando correctamente la contraseña de la cuenta del administrador, y esta tarea si la realiza perfectamente, sin problemas.

    También debo de decir que este fallo con la tarea configurada exactamente igual no me afecta en windows server 2008 R2 sino solo en la versión 2012.

    A ver si con esto logro arrojar la luz suficiente como para que alguien me de una pista de donde podría estar el fallo.

    Muchas Gracias.

    domingo, 26 de abril de 2015 0:58
  • Saludos jccrojano

    Me paso lo mismo de 2008 a 2012, que debes verificar primero por que despues de mucho buscar era esto:

    1. Ve a las propiedades de la tarea y verifica que en el historial de ella no exista una alarma de detenido de tarea por una instancia inesperada ...

    2. Luego verifica que este activo, puede que ya lo hayas verificado pero a mi me sucedio, voy a escribir resumido pero ya sabras cuales son las opciones a las que me refiero:

    . ejecutar con privilegios altos

    . ejecutar tanto si como no.

    . En configurar para seleccione las versiones windows 7 server 2008 R2

    . En desencadenadores mira bien como esta detener la tarea si ... dias ... por que si hay mas tareas en el server debes subir el valor.

    . En condiciones activar el equipo para ejecutar la tarea.

    . En configuración "permitir que la tarea se ejecute a petición" tambien la de detener la tarea si se ejecuta ... mira que el valor este alto dependiendo de las otras tareas, marca detener la tarea si cuando se le solicito no finalizo.

    . "Detener la instancia existente" ESTA SI NO ESTOY MAL ES LA QUE NO ME PERMITIA QUE SE EJECUTARA según lo que te escribi al inicio.

    Finalmente crea una tarea de apagado que no dure mas de 10 minutos (tu decides si poner mas tiempo) para que alcances a aplicar los cambios y prueba con una sola maquina para ver como se comporta, el tema es que yo hacia la prueba y funcionaba pero al dejarla mas tiempo me fallava de ahi los parametros que te comento.

    Espero este sea el tema que preguntas y nos cuentas por favor como te va

    La respuesta es provista como la vez y no hay garantía si te falla algo es importante que sepas que es en foro, pero intento colaborarte.

    domingo, 26 de abril de 2015 3:00
  • Hola soporteredes muchisimas gracias por tu ayuda, me a sido muy útil, el problema estaba, en que no estaba marcando la opción dentro de los desencadenadores "Detener la tarea si se ejecuta durante mas de" Si estaba marcando esta misma opción dentro de la pestaña de configuración, que se supone que afecta a todos los desencadenadores que uno pueda tener en la tarea, y a todas las acciones, pero debe de haber algún bug en el Windows Server 2012 con esto , porque en los Server 2008 R2 esta opción no la tengo habilitada dentro de los desencadenadores sino solo en la pestaña configuración y funciona a la perfección.

    Pero tu ayuda me a servido para ver por donde podía venir el problema, mil gracias de nuevo.

    *Notas: no me ha sido necesario utilizar la opción "activar el equipo para ejecutar esta tarea" porque este equipo esta 24x7 encendido y si no es que esta en mantenimiento así que no me a sido necesario, y no afectaba al correcto funcionamiento una vez corregí el error.

    -Ademas te confirmo que en el historial no daba ninguna alerta cuando la tarea no se ejecutaba, al contrario daba un mensaje informativo, diciendo que se había ejecutado correctamente aunque no era así.

    Lo mas extraño es que la tarea funcionaba bien sin activar la opción "Detener la tarea si se ejecuta durante mas de" dentro de los desencadenadores al configurarla como "Ejecutar solo cuando el usuario haya iniciado sesión", pero no al ejecutarla como, "Ejecutar tanto si el usuario inicio sesión como si no" muy extraño.

    Dejo una copia del codigo lista para importar en el "Programador de Tareas" de windows con las opciones correctamente habilitadas:

    Copiar contenido en un archivo "con un nombre cualquiera.xml" y estará listo para ser importado, luego configurar las horas y dias de los apagados como se desee.

    <?xml version="1.0" encoding="UTF-16"?>
    <Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
      <RegistrationInfo>
        <Date>2015-04-25T13:43:17.908431</Date>
        <Author>SRV-DCFS-01\Administrador</Author>
        <Description>Apagado los Lunes a las 9:00pm MSI-TPV-01 Automatico</Description>
      </RegistrationInfo>
      <Triggers>
        <CalendarTrigger>
          <StartBoundary>2015-04-25T20:00:00Z</StartBoundary>
          <ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
          <Enabled>true</Enabled>
          <ScheduleByWeek>
            <DaysOfWeek>
              <Monday />
            </DaysOfWeek>
            <WeeksInterval>1</WeeksInterval>
          </ScheduleByWeek>
        </CalendarTrigger>
      </Triggers>
      <Principals>
        <Principal id="Author">
          <UserId>SRV-DCFS-01\Administrador</UserId>
          <LogonType>Password</LogonType>
          <RunLevel>HighestAvailable</RunLevel>
        </Principal>
      </Principals>
      <Settings>
        <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
        <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
        <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
        <AllowHardTerminate>true</AllowHardTerminate>
        <StartWhenAvailable>false</StartWhenAvailable>
        <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
        <IdleSettings>
          <StopOnIdleEnd>true</StopOnIdleEnd>
          <RestartOnIdle>false</RestartOnIdle>
        </IdleSettings>
        <AllowStartOnDemand>true</AllowStartOnDemand>
        <Enabled>true</Enabled>
        <Hidden>false</Hidden>
        <RunOnlyIfIdle>false</RunOnlyIfIdle>
        <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
        <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
        <WakeToRun>false</WakeToRun>
        <ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
        <Priority>7</Priority>
      </Settings>
      <Actions Context="Author">
        <Exec>
          <Command>C:\Windows\SysWOW64\net.exe</Command>
          <Arguments>use \\192.168.1.3 "el_password_del_equipo_remoto" /User:Administrador</Arguments>
          <WorkingDirectory>C:\Windows\SysWOW64\</WorkingDirectory>
        </Exec>
        <Exec>
          <Command>C:\Windows\SysWOW64\shutdown.exe</Command>
          <Arguments>-m \\192.168.1.3 -s -t 600 -f</Arguments>
          <WorkingDirectory>C:\Windows\SysWOW64\</WorkingDirectory>
        </Exec>
        <Exec>
          <Command>C:\Windows\SysWOW64\net.exe</Command>
          <Arguments>use \\192.168.1.3\IPC$ /delete</Arguments>
          <WorkingDirectory>C:\Windows\SysWOW64\</WorkingDirectory>
        </Exec>
      </Actions>
    </Task>
    Muchas gracias, ya quedo resuelto el problema.



    • Marcado como respuesta jccrojano domingo, 26 de abril de 2015 12:59
    • Editado jccrojano domingo, 26 de abril de 2015 13:11
    domingo, 26 de abril de 2015 12:55
  • Saludos

    Me alegra mucho estamos para ayudar.

    Andrés

    lunes, 27 de abril de 2015 2:07
  • La Opcion de Permitir que el servicio interactue con el escritorio nunca esta activa, no la puedo marcar. he intentado con el administrador y nada
    miércoles, 26 de julio de 2017 14:25
  • Gracias!!!

    Justamente esto me estaba pasando con un Windows Server 2019 y no encontraba la manera de solventarlo.

    Saludos.

    jueves, 28 de marzo de 2019 18:08