| Jak si v jazyce PowerShell stáhnout nějakou webovou stránku? A co když to vyžaduje ověření? Jak jednoduché!
A využití? Třeba kvůli SharePoint, nebo jiné webové aplikaci, kterou chcete udržet při životě. Pokud se jí přes noc nikdo nedotýká, tak se trošku utlumí, odstránku, co hůř, IIS ji může úplně restartovat. Tak co když ji budeme v nějakém cyklu trošku dráždit?
Používám to taky na wifinách, kde je nějaký příliš krátý timeout a odpojuje mě to (například v Microsoftu, v Akvárku).
Stáhnutí stránky pod účtem aktuálně přihlášeného uživatele
$webClient = New-Object System.Net.WebClient
$webClient.Headers.Add(
"user-agent",
"sevecek-keep-web-alive")
$webClient.Credentials = [System.Net.CredentialCache]::DefaultCredentials
[string] $html = $webClient.DownloadString("http://intranet")
Stáhnutí stránky pod konkrétním účtem zadaným jako login a heslo
$webClient = New-Object System.Net.WebClient
$webClient.Headers.Add(
"user-agent",
"sevecek-keep-web-alive")
$webClient.Credentials = New-Object System.Net.NetworkCredential ('ondrej', 'Pa$$w0rd', 'gps')
# Or use the following: New-Object System.Net.NetworkCredential ('gps\ondrej', 'Pa$$w0rd')
[string] $html = $webClient.DownloadString("http://intranet")
A co když to musí valit přes proxy?
$webClient = New-Object System.Net.WebClient
$webClient.Headers.Add(
"user-agent",
"sevecek-keep-web-alive")
$webClient.Credentials = New-Object System.Net.NetworkCredential ('ondrej', 'Pa$$w0rd', 'gps')
# Or use the following: New-Object System.Net.NetworkCredential ('gps\ondrej', 'Pa$$w0rd')
# The second parameter (boolean) is BypassOnLocal which I hope is self-descriptive
$webClient.Proxy = New-Object System.Net.WebProxy ('tmg1.gopas.virtual:8080', $true)
[string] $html = $webClient.DownloadString("http://intranet")
A co když i ta proxy taky vyžaduje ověření?
Pozná se vůbec požadavek ověření od proxy serveru od požadavku na ověření od cílového web serveru? Ano. Proxy posílá HTTP 407 Proxy Authentication Required, zatímco cílový web server vrací HTTP 401 Unauthorized.
$webClient = New-Object System.Net.WebClient
$webClient.Headers.Add(
"user-agent",
"sevecek-keep-web-alive")
$webClient.Credentials = New-Object System.Net.NetworkCredential ('ondrej', 'Pa$$w0rd', 'gps')
$webClient.Proxy = New-Object System.Net.WebProxy ('tmg1.gopas.virtual:8080', $true)
$webClient.Proxy.UseDefaultCredentials = $true
# Or assign the credentials the same way as with the WebClient itself:
# $webClient.Proxy.Credentials = New-Object System.Net.NetworkCredential ('proxy-user', 'Pa$$w0rd', 'gps')
[string] $html = $webClient.DownloadString("http://intranet")
|