Powershell invoke WebRequest with NTLM for a post

ntlmpowershellrest

INITIAL QUESTION

How Can I perform Invoke-WebRequest or similar, with Powershell so that NTLM authentication is used but also supply a body for a post.

EXAMPLE

The code sample below is my example post using invoke web request and pipes response out to a .json file. Username and Password Variable not included in example.

$myURL = https://example.blah.etc
$params = @" {""EXAMPLE1":"STUFF"} "@ 

$Headers = @{ Authorization = "Basic {0}" -f [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $Username,$Password))) }


Invoke-WebRequest -Uri $myURL  -Headers $Headers -Method POST -ContentType "application/json" -Body  $params  | Select-Object -ExpandProperty Content > "C:\output.json"

UPDATE

Using -UseDefaultCredentials only works for Gets, not for posts.



ERROR RESPONSE

The remote server returned an error: (401) Unauthorized

Best Answer

just use -UseDefaultCredentials trying to manipulate the headers for NTLM is hard work. It is a challenge response that is painful. Let PS do the work...