windows - Powershell invoke-webrequest fungerer ikke

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et Powershell script, der skal køre en Invoke-WebRequest mod et websted. Jeg vil bruge dette script med PRTG Network Monitor for at sikre, at en webserver er op og kører korrekt.


I øjeblikket virker scriptet, der kører fra min lokale maskine samt kører med mine domæneoplysninger på probeserveren. Det løber dog ikke, når de er logget ind med de lokale adminoplysninger, hvilket er, hvad PRTG bruger.


Jeg har indsnævret det til en enkelt linje,


Invoke-WebRequest $uri -Method POST -Body $body -TimeoutSec 10




Det ser ud til, at Invoke-WebRequest, uanset årsagen, ikke fungerer, når du bruger denne konto. Når du kører den linje, producerer den ikke noget, ingen fejl, advarsel eller output. Både $uri og $body variabler er allerede defineret.


Selv om jeg er logget ind på sonde serveren med den lokale admin PRTG konto og kører Powershell som en anden bruger (ved hjælp af mine egne legitimationsoplysninger) mangler det stadig at producere noget.


Hvorfor ville en lokal adminkonto ikke kunne køre Invoke-WebRequest? Dette sker på en Windows Server 2012R2 med PSVersion 4.0.

Bedste reference


[[Turning min kommentar til et svar]]


I Windows PowerShell bruger Invoke-WebRequest Internet Explorer-motoren til at analysere websites, medmindre du fortæller det ikke. IE har mange restriktioner - der kommer fra sin sikkerhedsmodel af tillidstjenester/sikkerhedszoner, IE Enhanced Security, overstyrer gruppepolitik, måske mere, og det ser ud til at du har prøvet alt andet fornuftigt, og det var værd at prøve at teste det direkte.


Denne switch:


Invoke-WebRequest -UseBasicParsing ....


undgår IE-motoren og foretager en HTTP-anmodning og behandler svaret alle inden for C #/. Net.


Afvejningen er, at du får almindelige tekstresultater til at arbejde med og kan ikke få adgang til siden via HTML DOM, nej getElementByTagName() eller noget, der har brug for en live-browser-motor til at arbejde.