Sie können es herausfinden, indem Sie die Microsoft.PowerShell.Commands.Utility
Assembly dekompilieren .
Im Grunde geht Invoke-WebRequest
es nicht darum, die Daten so viel zu analysieren. Mit -UseBasicParsing
führt es einige Regex-basierte HTML-Analysen durch. Ohne diese Option wird die COM-API von Internet Explorer zum Analysieren des Dokuments verwendet.
Das ist es. Es wird immer versucht, HTML zu analysieren.
Invoke-RestMethod
Auf der anderen Seite steht Code zur Unterstützung von JSON- und XML-Inhalten zur Verfügung. Es wird versucht, einen geeigneten Decoder zu finden. HTML wird nicht unterstützt (mit Ausnahme von XML-konformem HTML natürlich).
Beide verwenden dieselbe Kernlogik, um die eigentliche HTTP-Anforderung auszuführen. Nur in der Ergebnisverarbeitung unterscheiden sie sich.
Sehen heißt glauben!
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