- This topic has 2 replies, 1 voice, and was last updated March 25, 2021 by Terry W.
Zerto API – Invoke-rest vs invoke-web
The forum ‘General Discussion’ is closed to new topics and replies.
something that always confused me (and this is probably Zerto specific but I’ll throw it out here)
I do all my requests using <strong>invoke-restmethod</strong>
execpt 1, the inital <strong>invoke-webrequest</strong>
to get my token
for example
$ZertoServer = 'zerto-zvm.internaldomain.local' $ZertoPort = "9669" $ZertoUser = "domain\Zerto-account" $ZertoPassword = "HLlmmt2W4rvcs3hlz8w" $BaseURL = "https://$($ZertoServer):$($ZertoPort)/v1" $AuthInfo = ("{0}:{1}" -f $ZertoUser, $ZertoPassword) $AuthInfo = [System.Text.Encoding]::UTF8.GetBytes($AuthInfo) $AuthInfo = [System.Convert]::ToBase64String($AuthInfo) $TokenSplat = @{ Method = 'Post' SkipCertificateCheck = $true Uri = "$BaseURL/session/add" Headers = @{Authorization = ("Basic {0}" -f $AuthInfo) } Body = @{ "AuthenticationMethod" = "1" } | ConvertTo-Json ContentType = "application/JSON" } # Why in gods green earth dosnt this work with invoke rest? $RestResponce = Invoke-RestMethod @TokenSplat $WebResponce = Invoke-WebRequest @TokenSplat $ZToken = @{"x-zerto-session" = "{0}" -f $WebResponce.headers.get_item("x-zerto-session") } $AlertsSpat = @{ Headers = $ZToken Uri = "$BaseURL/alerts" Method = 'Get' SkipCertificateCheck = $true } $AlertsJSON = Invoke-RestMethod @AlertsSpat
so why does (using all the same details mind you)
$RestResponce = Invoke-RestMethod @TokenSplat # Returns Nothing $WebResponce = Invoke-WebRequest @TokenSplat # Returns my session
I see it in everyone’s examples, and its something I don’t understand why <strong>invoke-restmethod</strong>
couldn’t achieve the same thing
not sure what happened to my formatting, but it’s good enough now
I notice I’ve put this in the wrong forum, should have been in the API/REST forum
I cant seem to edit the post
**Solved:** invoke-restmethod
does not return the response headers by default invoke-webrequest
does
Capturing those headers in the variable fixes the problem (ps6/7 only likely), code below
Invoke-RestMethod @TokenSplat -ResponseHeadersVariable RestSessinToken $ZToken = @{"x-zerto-session" = "{0}" -f $RestSessinToken.get_item("x-zerto-session") }
The forum ‘General Discussion’ is closed to new topics and replies.