PowerShell Commands

Invoke-WebRequest

The Invoke-WebRequest cmdlet sends HTTP and HTTPS requests to a web page or web service.

GET Invoke-WebRequest

Sends a GET request and echo the response Content

$varUrl = "https://postman-echo.com/get"
Invoke-WebRequest -Method Get -Uri $varUrl -TimeoutSec 7200 | Select-Object -Expand Content

Sends a GET request and echo the response Status Code and Content

$varUrl = "https://postman-echo.com/get"

Try
{
    $response = Invoke-WebRequest -Method Get -Uri $varUrl -TimeoutSec 7200
    $response.StatusCode
    $response.Content
}
Catch
{
    $ErrorMessage = $_.Exception.Message
    Write-Output($ErrorMessage)
    $FailedItem = $_.Exception
    Write-Output($FailedItem)
    Break
}

POST Invoke-WebRequest

Sends a POST request and echo the response Content

$varUrl = "https://postman-echo.com/post"

$params = @'
{"method": "POST"}
'@

Invoke-WebRequest -Method Post -Uri $varUrl -Body $params -ContentType "application/json" -TimeoutSec 7200 | Select-Object -Expand Content

Sends a POST request and echo the response Status Code and Content

$varUrl = "https://postman-echo.com/post"

$params = @'
{"method": "POST"}
'@

Try
{
    $response = Invoke-WebRequest -Method Post -Uri $varUrl -Body $params -ContentType "application/json" -TimeoutSec 7200
    $response.StatusCode
    $response.Content
}
Catch
{
    $ErrorMessage = $_.Exception.Message
    Write-Output($ErrorMessage)
    $FailedItem = $_.Exception
    Write-Output($FailedItem)
    Break
}

Set Powershell to skip SSL certificate checks

If you are trying to query a web site and you have invalid SSL certificates, Powershell is by default very strict on what it accepts. You will often end up with errors like:

Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

For the work around, try to run the script below before sending the invoke commands. This will ignore the ssl certificate error validation in the current PowerShell Session.

add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;

public class TrustAllCertsPolicy : ICertificatePolicy {
    public bool CheckValidationResult(
      ServicePoint srvPoint, 
      X509Certificate certificate, 
      WebRequest request, 
      int certificateProblem) 
    {
        return true;
    }
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

Reference

Last updated