PowerShell script to check the status of a URL
monitoring, powershell, powershell-2.0, web-services
Solution
I recently set up a script that does this.
As David Brabant pointed out, you can use the `System.Net.WebRequest` class to do an HTTP request.
To check whether it is operational, you should use the following example code:
# First we create the request.
$HTTP_Request = [System.Net.WebRequest]::Create('http://google.com')
# We then get a response from the site.
$HTTP_Response = $HTTP_Request.GetResponse()
# We then get the HTTP code as an integer.
$HTTP_Status = [int]$HTTP_Response.StatusCode
If ($HTTP_Status -eq 200) {
Write-Host "Site is OK!"
}
Else {
Write-Host "The Site may be down, please check!"
}
# Finally, we clean up the http request by closing it.
If ($HTTP_Response -eq $null) { }
Else { $HTTP_Response.Close() }
Problem
Similar to this question here I am trying to monitor if a set of website links are up and running or not responding. I have found the same PowerShell script over the Internet. However, instead of direct website links I need to check more specific links, for example: ``` http://mypage.global/Chemical/ http://maypage2:9080/portal/site/hotpot/ ``` When I am trying to check on the status of these links, I get the following output: ``` URL StatusCode StatusDescription ResponseLength TimeTaken http://mypage.global/Chemical/ 0 http://maypage2:9080/portal/site/hotpot/ 0 ``` The above links requires me to be connected to the VPN, but I can access these links from the browser. Output of `Invoke-WebRequest -Uri https://stackoverflow.com/questions/20259251/powershell-script-to-check-the-status-of-a-url`: ``` PS C:\Users\682126> Invoke-WebRequest -Uri https://stackoverflow.com/questions/20259251/powershell-script-to-check-the-status-of-a-url The term 'Invoke-WebRequest' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:18 + Invoke-WebRequest <<<< -Uri https://stackoverflow.com/questions/20259251/powershell-script-to-check-the-status-of-a-url > tmp.txt + CategoryInfo : ObjectNotFound: (Invoke-WebRequest:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException ``` `$PSVersionTable` ``` Name Value ---- ----- CLRVersion 2.0.50727.5472 BuildVersion 6.1.7601.17514 PSVersion 2.0 WSManStackVersion 2.0 PSCompatibleVersions {1.0, 2.0} SerializationVersion 1.1.0.1 PSRemotingProtocolVersion 2.1 ```