Puede averiguarlo descompilando el Microsoft.PowerShell.Commands.Utility
ensamblaje.
Básicamente, Invoke-WebRequest
no se trata de analizar mucho los datos. Con -UseBasicParsing
, realiza un análisis HTML basado en Regex. Sin este modificador, usará la API COM de Internet Explorer para analizar el documento.
Eso es. Siempre intentará analizar HTML.
Invoke-RestMethod
por otro lado tiene código para soportar contenido JSON y XML. Intentará detectar un decodificador apropiado. No , no es compatible con HTML (a excepción de HTML compatible con XML, por supuesto).
Ambos comparten la misma lógica central para realizar la solicitud HTTP real. Es solo en el procesamiento de resultados que difieren.
¡Ver es creer!
PS C:\Users\fuzzy> (Invoke-RestMethod https://httpbin.org/headers).headers
Connection Host User-Agent
---------- ---- ----------
close httpbin.org Mozilla/5.0 (Windows NT; Windows NT 10.0; de-DE) WindowsPowerShell/5.1.15063.483
PS C:\Users\fuzzy> Invoke-WebRequest -UseBasicParsing https://httpbin.org/headers
StatusCode : 200
StatusDescription : OK
Content : {
"headers": {
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (Windows NT; Windows NT 10.0; de-DE)
WindowsPowerShell/5.1.15063.483"
}
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
X-Processed-Time: 0.00075101852417
Content-Length: 180
Content-Type: application/json...
Forms :
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [X-Processed-Time, 0.00075101852417]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml :
RawContentLength : 180