2009-12-31 6 views
52

Ho una pagina Web ospitata su una casella di Windows che devo assicurare che venga caricata almeno una volta/giorno. Il mio piano attuale è quello di creare un'attività pianificata che si apre Internet Explorer e colpisce l'URL:Metodo consigliato per caricare un URL tramite un'attività pianificata su Windows

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

Questo è stato semplice da configurare e funziona bene, ma mi sembra un hack perché Internet Explorer ha effettivamente aprire e colpire questo URL. Non ho bisogno di alcun input da questa pagina, semplicemente memorizza i dati memorizzati nella cache nei file quando viene colpito.

C'è un modo semplice per farlo? Nel caso in cui sia importante, questo è un sito VB.net.

Grazie in anticipo!

+0

Mentre uno script VB corretto è un modo migliore per andare si potrebbe desiderare di notare che è possibile interrompere l'attività se viene eseguita per più di un'ora nella scheda Impostazioni di Utilità di pianificazione. –

risposta

106

Come sottolineato da Remo Ruşanu, PowerShell sarebbe la strada da percorrere. Ecco un semplice one-liner che è possibile utilizzare per creare un'operazione pianificata, senza bisogno di scrivere un file ps1 separata:

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

È possibile creare l'attività pianificata in questo modo:

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

Questo esempio imposta l'attività per l'esecuzione giornaliera - consulta lo schtasks.exe documentation per ulteriori opzioni.

+0

Hai un esempio che include una querystring (e l'escaping di un ampsers e?) –

+0

@PaulGeorge che sostituisce la e commerciale con^e dovrebbe fare il trucco. –

+5

Funziona per me, virgolette singole, nessuna modifica alla e commerciale: powershell -ExecutionPolicy unrestricted -Command "(New-Object Net.WebClient) .DownloadString ('http: //localhost/cron.aspx? Var1 = cat & var2 = dog' " –

5

Esistono versioni di Windows dei più comuni strumenti di richiesta http di riga di comando, ad esempio cURL e wget. Potresti sicuramente creare un'attività pianificata che eseguirà uno di questi. L'ho fatto anche da uno script di Windows Scripting Host, se avevi bisogno di eseguire il loop o creare parametri URL al volo, o alcuni di questi.

+0

+1 per curl e wget –

+0

+1 per molti grandi opzioni, mi piace soprattutto l'idea Windows Scripting Host, ma è andato w/soluzione di Rick da quando è andato il miglio supplementare w/la soluzione completa. Grazie per le idee per il futuro! –

38

È possibile pianificare uno script PowerShell. PS è piuttosto potente e ti dà accesso all'intero .Net Framework, oltre alle modifiche. Ecco un esempio:

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

Questa è la soluzione più pulita – Liam

+0

bella soluzione sta funzionando –

17

Un'altra opzione è VB Script. Per esempio (salvo quanto 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..." 
+0

Ah, avrei dovuto pensare a VBScript. Grande idea. Un +1 e un'accettazione per te. Anche altri hanno avuto grandi idee, ma hai fatto il duro lavoro di presentare una soluzione completa! Mille grazie, Rick! –

+0

come faccio a farlo nel server di Ubuntu? alternativa per vbs? Giava? –

5

This SuperUser.com answer è molto più semplice.

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

In particolare, ecco come appare in un'attività pianificata di Windows:

enter image description here

Anche se, questo probabilmente viene eseguito il browser predefinito configurato in background. Se deve essere IE, allora dovrebbe essere configurato. Questa è probabilmente l'opzione migliore. È opportuno disporre di una soluzione che viene eseguita direttamente come passaggio Azione dell'attività. Tutte le informazioni sono proprio qui. Ancora meglio se è conciso, così puoi vedere la maggior parte del comando senza scorrere la casella di testo.

WGET/CURL - buona alternativa

Semmai, WGET sarebbe una buona alternativa al cmd..start..url. I'm not the first to think of this. Il lato negativo è che devi scaricare WGET per Windows perché funzioni - non è una soluzione pronta all'uso. Ma il WGET è più leggero e ti dà ancora più energia . Puoi inviare molti altri tipi di chiamate URL.Ciò include diversi metodi HTTP come POST, intestazioni personalizzate e altro ancora. Curl è una buona opzione, invece di Wget - hanno diversi set di funzionalità, molti si sovrappongono.

PowerShell - non consigliato

PowerShell, può essere considerato una soluzione "leggera", ma sei anche il caricamento di un PowerShell (Net AppDomain), che ha un po 'di ritardo, e anche il comando è molto più lungo, e quindi più difficile da ricordare se lo fai regolarmente. Quindi PowerShell non è l'opzione migliore.

VBScript - non raccomandato

Chiaramente, VBScript è meno raccomandabile. Hai molto di più che dovresti ricordare e la sceneggiatura è abbastanza grande. A meno che tu non abbia altri passaggi che giustificano uno script, non hai una risorsa completamente separata solo per fare qualcosa che potresti aver realizzato direttamente all'interno di una Operazione Programmata.

Inoltre, si veda domande simili:

+0

Ciao @Todd, questa soluzione aprirà un browser non eseguito in background – MichaelMao

+0

L'operazione in background non era un requisito dell'op. Anche se questo è abbastanza facile da fare con cmd, penserei, in combinazione con queste opzioni. – Todd

+0

Hai ragione, mia assenza – MichaelMao

8

Come di PowerShell 5.0, curl è un alias per Invoke-WebRequest, in modo da poter creare un'operazione pianificata come segue:

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

È inoltre possibile utilizzare Invoke-WebRequest, ma curl è più conciso.

+0

Come sempre, la risposta corretta è sempre l'ultima. Usando cmd/c si aprirà una finestra del browser, che non si vuole necessariamente – Hypersapien

Problemi correlati