Invoke-WebRequest Internet IP Abfrage
Das PowerShell Cmdlet Invoke-WebRequest ist die HTTP Abfrage ab PowerShell 3.0 für das Web. Dieses Cmdlet kann jedes HTTP-Verb wie GET POST PUT HEAD CONNECT u.a.m. mit HTTP-Parameter an einen WebServer senden und als HTTP-Header ausgeben. Invoke-WebRequest und Invite-RestMethod sind auch als Aliase anwendbar, wie diese von Unixoiden Systeme mit curl und wget bekannten sind.
Invoke-WebRequest sendet HTTP- und HTTPS-Anforderungen an eine Webseite auf einem WebServer. Es analysiert die Antwort und gibt Sammlungen von Links, Bildern und andere wichtige HTML-Elemente zurück.
Invoke-WebRequest kann beispielsweise in der PowerShell die eigene Public IP zurückgeben diese der Router vom ISP erhalten hat.
1 2 3 4 |
PS C:\> Invoke-WebRequest ipline.ch | Select-Object -Property Content | Format-List Content : 12.34.56.78 |
Die HTTP-Header RAW Status Ausgabe mit Invoke-WebRequest.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
PS C:\> Invoke-WebRequest echo.ipline.ch StatusCode : 200 StatusDescription : OK Content : 12.34.56.78 RawContent : HTTP/1.1 200 OK Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Length: 12 Content-Type: text/html; charset=UTF-8 Date: Sun, 26 Jul 2020 10:08:48 GMT Server: Apache/2.4.6 (CentOS) ... Forms : {} Headers : {[Keep-Alive, timeout=5, max=100], [Connection, Keep-Alive], [Content-Length, 12], [Content-Type, text/html; charset=UTF-8]...} Images : {} InputFields : {} Links : {} ParsedHtml : mshtml.HTMLDocumentClass RawContentLength : 12 |
Wird folgender Fehler ausgegeben, muss der Internet-Explorer gestartet werden, oder mit Parameter UseBasicParsing ausführen.
Invoke-WebRequest : Der Antwortinhalt kann nicht analysiert werden, da das Internet Explorer-Modul nicht verfügbar ist, oder die Konfiguration beim ersten Start von Internet Explorer ist nicht abgeschlossen. Geben Sie den UseBasicParsing-Parameter an, und wiederholen Sie den Vorgang.
1 2 |
PS C:\> Invoke-WebRequest ipline.ch -UseBasicParsing |
Die HTTP-Headers Ausgabe von Invoke-WebRequest alias curl.
1 2 3 4 5 6 |
PS C:\> curl unblog.ch/ifconfig | Select Headers Headers ------- {[Content-Length, 3109], [Content-Type, text/html; charset=UTF-8], [Date, Sun, 26 Jul 2020 10:15:46 GMT], [Server, Apache/2.4.6 (CentOS) |
Links von einer Webseite Abrufen
In diesem Beispiel werden die Links einer Webseite ausgegeben. Das Cmdlet ermöglicht den Inhalt einer Webseite mit den Links (href) zurückzugeben.
1 2 3 4 5 6 |
PS C:\> (Invoke-WebRequest -Uri "https://unblog.ch").Links.Href https://unblog.ch/ifconfig/ https://think.unblog.ch/ #search-container ... |
Senden einer Formulardatendatei
In diesem Beispiel wird das Aktualisieren eines Benutzerprofils veranschaulicht. multipart/form-data.
1 2 3 4 5 6 7 8 9 10 11 |
PS C:\> $Uri = 'https://api.contoso.com/v3/profile' $Form = @{ firstName = 'Mike' lastName = 'Smith' email = 'mike.smith@contoso.com' avatar = Get-Item -Path 'c:\Pictures\mike.png' birthday = '1984-12-21' hobbies = 'Cycling','Wakling','Jogging' } $Result = Invoke-WebRequest -Uri $Uri -Method Post -Form $Form |
Das Profilformular erfordert die Felder kommagetrennt wie folgt: , , , , u.s.w. Die API erwartet, dass ein Bild für das Benutzerprofilbild im Feld bereitgestellt wird. Die API akzeptiert auch mehrere Einträge, die im gleichen Formular übermittelt werden sollen. firstName lastName email avatar birthday hobbies.