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 ```

Original source

Related problems