Méthode recommandée pour charger une URL via une tâche programmée sur Windows

j'ai une page Web hébergée sur une fenêtre Windows que je dois assurer se charge au moins une fois/jour. Mon plan actuel est de créer une tâche programmée qui ouvre Internet Explorer et frappe L'URL:

"C:Program FilesInternet Exploreriexplore.exe" myurl.com/script_to_run_daily.aspx

C'était simple à mettre en place et ça fonctionne bien, mais ça me frappe comme un hack parce Qu'Internet Explorer doit en fait ouvrir et cliquer sur cette URL. Je n'ai pas besoin d'aucune entrée en arrière de cette page, il stocke simplement des données mises en cache dans les dossiers quand il est frappé.

est - ce qu'il y a une façon plus tranchante de faire ça? En cas d'importance, il s'agit d'un VB.net site.

Merci d'avance!

54
demandé sur Cory House 2010-01-01 01:33:11

7 réponses

comme le souligne Remus Rusanu, PowerShell serait la voie à suivre. Voici un simple one-liner que vous pouvez utiliser pour créer une tâche programmée, sans avoir besoin d'écrire un séparé .fichier ps1:

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

vous pouvez créer la tâche programmée comme ceci:

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

cet exemple définit la tâche à exécuter quotidiennement - consultez les schtasks.exe documentation pour plus d'options.

111
répondu Nikhil Dabas 2015-09-22 14:50:27

vous pouvez programmer un script PowerShell . PS est assez puissant et vous donne accès à L'ensemble du Framework .Net, plus le changement. Voici un exemple:

$request = [System.Net.WebRequest]::Create("http://www.example.com")
$response = $request.GetResponse()
$response.Close()
40
répondu Remus Rusanu 2009-12-31 23:14:03

une autre option est le Script VB. Par exemple (enregistrer en tant que fichier.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
répondu RickNZ 2009-12-31 23:36:25

à partir de PowerShell 5.0, curl est un alias pour Invoke-WebRequest , donc vous pouvez créer une tâche programmée comme suit:

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

vous pouvez aussi utiliser Invoke-WebRequest , mais curl est plus concis.

10
répondu Johnny Oshika 2016-10-18 20:11:23

This SuperUser.com la réponse est beaucoup plus simple.

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

plus spécifiquement, voici comment il ressemble dans une tâche programmée Windows:

enter image description here

bien que, cela exécute probablement le navigateur configuré par défaut dans l'arrière-plan. Si cela doit être IE, alors cela doit être configuré. C'est probablement la meilleure option. Il est bon d'avoir une solution qui fonctionne directement comme une étape de la Tâche. Toutes les informations sont là. Encore mieux si elle est courte, de sorte que vous pouvez voir la plupart de la commande sans défiler à travers la boîte de texte.

WGET / CURL-good alternative

si quelque chose, WGET serait une bonne alternative à cmd..start..url . Je ne suis pas le premier à penser à ce . L'inconvénient est que vous devez télécharger WGET pour Windows pour qu'il fonctionne - it n'est-ce pas un out-of-the-box solution. Mais WGET est plus léger et vous donne plus de puissance . Vous pouvez envoyer beaucoup d'autres types d'appels d'URL. Cela inclut différentes méthodes HTTP telles que les en-têtes POST, custom et plus. Curl est une bonne option, au lieu de Wget - ils ont différents ensembles de caractéristiques, beaucoup de chevauchement.

PowerShell - non recommandé

PowerShell, pourrait être considéré comme un " briquet" option, mais vous chargez aussi une PowerShell (.net AppDomain) qui a un peu de lag, et aussi la commande est beaucoup plus longue, et donc plus difficile à se rappeler si vous faites cela régulièrement. Donc PowerShell n'est pas la meilleure option.

VBScript-non recommandé

de toute évidence, VBScript est moins recommandable. Vous avez beaucoup plus de vous devez vous rappeler, et le script est assez grand. Sauf si vous avez d'autres étapes qui mandat d'un script, n'ont pas complètement distincte de ressources juste pour faire quelque chose que vous pourriez avoir accompli directement à l'intérieur d'une Tâche Planifiée.

Voir aussi questions similaires:

7
répondu Todd 2017-05-23 12:34:39

il existe des versions Windows des outils de requête http en ligne de commande les plus courants, tels que cURL et wget . Vous pourriez certainement créer une tâche planifiée qui exécuterait l'un de ces. J'ai aussi fait cela à partir d'un script Windows Scripting Host, si vous aviez besoin de boucler ou de créer des paramètres D'URL à la volée, ou quelque chose comme ça.

5
répondu Jacob Mattison 2009-12-31 22:41:06

essayé avec curl sur PowerShell 4.0, curl est un alias pour Invoke-WebRequest, vous pouvez donc créer une tâche programmée comme suit:

Action: Démarrer un programme Programme/script: powershell Ajouter des arguments: curl http://www.example.com/foo/bar

a fonctionné comme un charme!

0
répondu Johny papa 2018-07-04 08:59:59