Método recomendado para cargar una URL a través de una tarea programada en Windows


Tengo una página web alojada en un cuadro de Windows que necesito para asegurar se carga al menos una vez/día. Mi plan actual es crear una tarea programada que abra Internet Explorer y llegue a la URL:

"C:\Program Files\Internet Explorer\iexplore.exe" myurl.com/script_to_run_daily.aspx

Esto fue fácil de configurar y funciona bien, pero me parece un truco porque Internet Explorer en realidad tiene que abrir y golpear esta URL. No necesito ninguna entrada de esta página, simplemente almacena datos en caché en archivos cuando se golpea.

¿Hay una forma más hábil de hacer esto? En caso importa, este es un VB.net sitio.

Gracias de antemano!

Author: Cory House, 2010-01-01

7 answers

Como señaló Remus Rusanu, PowerShell sería el camino a seguir. Aquí hay un simple delineador que puede usar para crear una tarea programada, sin necesidad de escribir un archivo .ps1 separado:

powershell -ExecutionPolicy unrestricted -Command "(New-Object Net.WebClient)
                                           .DownloadString(\"http://localhost/cron.aspx\")"

Puede crear la tarea programada de esta manera:

schtasks /create /tn "MyAppDailyUpdate" /tr "powershell -ExecutionPolicy unrestricted 
        -Command \"(New-Object Net.WebClient)
              .DownloadString(\\\"http://localhost/cron.aspx\\\")\"" /sc DAILY /ru System

Este ejemplo configura la tarea para ejecutarse diariamente - consulte las tareas .documentación exe para más opciones.

 111
Author: Nikhil Dabas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-22 14:50:27

Puede programar un script PowerShell. PS es bastante potente y le da acceso a todo el.Net Framework, más el cambio. He aquí un ejemplo:

$request = [System.Net.WebRequest]::Create("http://www.example.com")
$response = $request.GetResponse()
$response.Close()
 40
Author: Remus Rusanu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-31 23:14:03

Otra opción es el script VB. Por ejemplo (guardar como archivo.vbs):

sSrcUrl = "http://yourdomain.com/yourfile.aspx"
sDestFolder = "C:\yourfolder\"
sImageFile = "filename.txt"
set oHTTP = WScript.CreateObject("MSXML2.ServerXMLHTTP")
oHTTP.open "GET", sSrcUrl, False
oHTTP.send ""
set oStream = createobject("adodb.stream")
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
oStream.type = adTypeBinary
oStream.open
oStream.write oHTTP.responseBody
oStream.savetofile sDestFolder & sImageFile, adSaveCreateOverWrite
set oStream = nothing
set oHTTP = nothing
WScript.Echo "Done..."
 18
Author: RickNZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-31 23:36:25

A partir de PowerShell 5.0, curl es un alias para Invoke-WebRequest, por lo que puede crear una tarea programada de la siguiente manera:

Action: Start a program
Program/script: powershell
Add arguments: curl http://www.example.com/foo/bar

También puedes usar Invoke-WebRequest, pero curl es más conciso.

 10
Author: Johnny Oshika,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-18 20:11:23

Esto SuperUser.com la respuesta es mucho más simple.

cmd /c start http://example.com/somePage.html

Más específicamente, así es como se ve en una tarea Programada de Windows:

introduzca la descripción de la imagen aquí

Aunque, esto probablemente ejecuta el navegador configurado por defecto en segundo plano. Si debe ser IE, entonces debe configurarse. Esta es probablemente la mejor opción. Es bueno tener una solución que se ejecuta directamente como un paso de Acción de la Tarea. Toda la información está ahí. Incluso mejor si es conciso, para que pueda vea la mayor parte del comando sin desplazarse por el cuadro de texto.

WGET / CURL-buena alternativa

En todo caso, WGET sería una buena alternativa a cmd..start..url. No soy el primero en pensar en esto. La desventaja es que tienes que descargar WGET para Windows para que funcione , no es una solución lista para usar. Pero WGET es más ligero y, lo que es más importante, te da más potencia. Puedes enviar muchos otros tipos de llamadas URL. Esto incluye diferentes métodos HTTP tales como POST, encabezados personalizados y más. Curl es una buena opción , en lugar de Wget-tienen diferentes conjuntos de características, muchas superpuestas.

PowerShell-no recomendado

PowerShell, podría considerarse una opción "más ligera", pero también está cargando un PowerShell (. Net AppDomain) que tiene un poco de retraso, y también el comando es mucho más largo, y por lo tanto más difícil de recordar si está haciendo esto regularmente. Así que PowerShell no es la mejor opción.

VBScript-not recomendado

Claramente, VBScript es menos recomendable. Usted tiene mucho más que tendría que recordar, y el guion es bastante grande. A menos que tenga otros pasos que justifiquen un script, no tenga un recurso completamente separado solo para hacer algo que podría haber logrado directamente dentro de una Tarea Programada.

También, ver similar preguntas:

 7
Author: Todd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:39

Hay versiones de Windows de las herramientas de solicitud http de línea de comandos más comunes, como cURL y wget. Ciertamente podría crear una tarea programada que ejecutaría una de estas. También he hecho esto desde dentro de un script de Host de Windows, si necesita hacer un bucle o crear parámetros de URL sobre la marcha, o algo así.

 5
Author: Jacob Mattison,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-31 22:41:06

Probado con curl en PowerShell 4.0, curl es un alias para Invoke-WebRequest, por lo que puede crear una tarea Programada de la siguiente manera:

Acción: Iniciar un programa Programa / script: powershell Añadir argumentos: curl http://www.example.com/foo/bar

Funcionó como un encanto!

 0
Author: Johny papa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-04 08:59:59