Рекомендуемый метод загрузки URL-адреса с помощью запланированной задачи в Windows

У меня есть веб-страница, размещенная на ящике Windows, которую я должен заверить, загружается как минимум раз/в день. Мой текущий план заключается в создании запланированной задачи, которая открывает Internet Explorer и отображает URL-адрес:

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

Это было просто настроить и отлично работает, но это выглядит как хак, потому что Internet Explorer действительно должен открывать и удалять этот URL. Мне не нужен какой-либо вход с этой страницы, он просто хранит кешированные данные в файлах, когда он попадает.

Есть ли способ сделать это? В случае, если это имеет значение, это сайт VB.net.

Спасибо заранее!

Ответ 1

Как отметил Ремус Русану, PowerShell - это путь. Вот простой однострочный вкладыш, который можно использовать для создания запланированной задачи, без необходимости писать отдельный файл .ps1:

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

Вы можете создать запланированную задачу следующим образом:

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

В этом примере задается задача для ежедневной работы - обратитесь к документации schtasks.exe для получения дополнительных параметров.

Ответ 2

Вы можете запланировать PowerShell script. PS довольно мощный и дает вам доступ ко всей .NET Framework, а также к изменениям. Вот пример:

$request = [System.Net.WebRequest]::Create("http://www.example.com")
$response = $request.GetResponse()
$response.Close()

Ответ 3

Другой вариант - VB Script. Например (save as file.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..."

Ответ 4

Как и PowerShell 5.0, curl является псевдонимом для Invoke-WebRequest, поэтому вы можете создать запланированную задачу следующим образом:

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

Вы также можете использовать Invoke-WebRequest, но curl более краткий.

Ответ 5

Существуют версии Windows самых распространенных инструментов запроса HTTP командной строки, таких как cURL и wget. Вы могли бы создать запланированную задачу, которая запускала бы одну из них. Я также сделал это изнутри Windows Scripting Host script, если вам нужно было петли или создавать параметры URL на лету или некоторые из них.

Ответ 6

Этот ответ SuperUser.com намного проще.

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

В частности, здесь, как он выглядит в запланированной задаче Windows:

введите описание изображения здесь

Хотя это скорее всего работает в браузере по умолчанию в фоновом режиме. Если это должен быть IE, то это должно быть настроено. Вероятно, это лучший вариант. Хорошо иметь решение, которое выполняется непосредственно как шаг действия Задачи. Вся информация прямо там. Еще лучше, если он будет кратким, поэтому вы можете увидеть большую часть команды, не прокручивая текстовое поле.

WGET/CURL - хорошая альтернатива

Во всяком случае, WGET будет хорошей альтернативой cmd..start..url. Я не первый, кто думает об этом. Недостатком является то, что вам нужно загрузить WGET для Windows, чтобы он работал - это не готовое решение. Но WGET легче и важнее дает вам больше энергии. Вы можете отправлять много других типов URL-адресов. Это включает в себя различные HTTP-методы, такие как POST, пользовательские заголовки и многое другое. Curl - хороший вариант, вместо Wget - у них разные наборы функций, многие из которых перекрываются.

PowerShell - не рекомендуется

PowerShell может считаться "более легким", но вы также загружаете PowerShell (.Net AppDomain), который имеет немного отставания, а также команда намного длиннее, и поэтому сложнее запомнить, если вы делаете это регулярно. Поэтому PowerShell не самый лучший вариант.

VBScript - не рекомендуется

Очевидно, что VBScript менее рекомендуется. У вас есть гораздо больше, что вам нужно запомнить, а script довольно большой. Если у вас нет других шагов, гарантирующих script, у вас нет полностью отдельного ресурса, чтобы сделать что-то, что вы могли бы выполнить непосредственно в запланированной задаче.

Также см. похожие вопросы: