PowerShell 5.1: Invoke-WebRequest: Forhindrer scriptkørsel fra webindhold

Gælder for
Win 10 Ent LTSB 2016 Win 10 Ent LTSC 2019 Windows 10 IoT Enterprise LTSC 2021 Windows 10, version 22H2, all editions Windows 11 Home and Pro, version 22H2 Windows 11 Enterprise Multi-Session, version 22H2 Windows 11 Enterprise and Education, version 22H2 Windows 11 IoT Enterprise, version 22H2 Windows 11 SE, version 23H2 Windows 11 Home and Pro, version 23H2 Windows 11 Enterprise and Education, version 23H2 Windows 11 Enterprise Multi-Session, version 23H2 Windows 11 version 24H2, all editions Windows 11 version 25H2, all editions Windows Server 2008 Premium Assurance Windows Server 2008 R2 Premium Assurance Windows Server 2012 ESU Windows Server 2012 R2 ESU Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server 2025

Bemærk

  • Oprindelig udgivelsesdato: 9. december 2025
  • KB-id: 5074596

Bemærk

I denne artikel beskrives en ændring, der primært påvirker virksomheds- eller it-administrerede miljøer, hvor PowerShell-scripts bruges til automatisering og hentning af webindhold. People, der bruger enheder i personlige eller private miljøer, behøver generelt ikke at foretage sig noget, da disse scenarier er ualmindelige uden for it-administrerede miljøer.

Ændringslog
Rediger dato Skift beskrivelse
20. december 2025
  • "Sikkerhedsadvarsel" er føjet til afsnittet "Oversigt".
  • Tilføjet følgende afsnit til afsnittet "Resumé" for overskuelighedens skyld:

    PowerShells Invoke-WebRequest kommando foretager en HTTP- eller HTTPS-anmodning til en webserver og returnerer resultaterne. I denne artikel beskrives en hærdningsændring, hvor Windows PowerShell 5.1 bevidst viser en meddelelse om sikkerhedsbekræftelse, når du bruger kommandoen Invoke-WebRequest til at hente websider uden specielle parametre. Denne funktionsmåde opstår, når understøttede Windows-klienter og -servere har installeret Windows-Opdateringer, der er udgivet den 9. december 2025, og derefter. Du kan finde flere oplysninger under CVE-2025-54100.
  • Følgende punkttegn er føjet til "For automatiserede scripts eller planlagte opgaver" i Mulighed 1 i afsnittet "Udfør en handling".
    • For scripts, der kører med indstillingen uden profil: Hvis scriptet har mange forekomster af de Invoke-WebRequest kald, skal du erklære $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true øverst i scriptet.
    • Når Invoke-WebRequest bruges sammen med parameteren -UseBasicParsing , er det ikke muligt at parse fuld dokumentobjektmodel (DOM) ved hjælp af Internet Explorer-komponenter (HTMLDocument Interface (mshtml)) .
  • Følgende punkttegn er føjet til punkttegnet "Moderniser din tilgang til webinteraktioner" i valgmulighed 2 i afsnittet "Udfør handling".
    • Invoke-Webrequest i Powershell Core (version 7.x eller nyere) understøtter ikke DOM-parsing ved hjælp af Internet Explorer-komponenter. Standardparsingen vil sikkert hente indholdet uden scriptudførelse.

Sammendrag

Windows PowerShell 5.1 viser nu en meddelelse om sikkerhedsbekræftelse, når du bruger kommandoen Invoke-WebRequest til at hente websider uden særlige parametre.

Bemærk

  • Sikkerhedsadvarsel: Risiko ved udførelse af script Invoke-WebRequest fortolker indholdet af websiden. Scriptkode på websiden køres muligvis, når siden fortolkes.
  • ANBEFALET HANDLING: Brug parameteren -UseBasicParsing for at undgå udførelse af scriptkode.
  • Vil du fortsætte?

Denne prompt advarer om, at scripts på siden kan køre under fortolkning, og advarer dig om at bruge
-UseBasicParsing parameter for at undgå udførelse af scripts. Brugeren skal vælge at fortsætte eller annullere handlingen. Denne ændring hjælper med at beskytte mod skadeligt webindhold ved at kræve brugersamtykke før potentielt risikable handlinger.

PowerShells Invoke-WebRequest-kommando foretager en HTTP- eller HTTPS-anmodning til en webserver og returnerer resultaterne. I denne artikel beskrives en hærdningsændring, hvor Windows PowerShell 5.1 bevidst viser en meddelelse om sikkerhedsbekræftelse, når du bruger kommandoen Invoke-WebRequest til at hente websider uden særlige parametre. Denne funktionsmåde opstår, når understøttede Windows-klienter og -servere har installeret Windows-Opdateringer, der er udgivet den 9. december 2025. Du kan finde flere oplysninger under CVE-2025-54100.

Hvad ændrede sig?

  • Forrige funktionsmåde

    • Full Document Object Model (DOM) Parsing ved hjælp af Internet Explorer-komponenter (mshtml (HTMLDocument Interface)), som kan udføre scripts fra downloadet indhold.
  • Ny funktionsmåde

    • Anmodning om sikkerhedsbekræftelse: Når du har installeret de Windows-opdateringer, der er udgivet den 9. december 2025 eller derefter, vil kørsel af kommandoen Invoke-WebRequest (også kendt som curl) i PowerShell 5.1 udløse en sikkerhedsmeddelelse (når der ikke bruges nogen særlig parameter). Prompten vises i PowerShell-konsollen med en advarsel om risiko for udførelse af script

      Det betyder, at PowerShell stopper midlertidigt for at advare dig om, at uden forholdsregler kan websidens scriptindhold blive udført på dit system, når det behandles. Hvis du trykker på Enter (eller vælger Nej), annulleres handlingen som standard af sikkerhedsmæssige årsager. PowerShell viser en meddelelse om, at den blev annulleret på grund af sikkerhedsproblemer, og foreslår at køre kommandoen igen ved hjælp af
      -UseBasicParsing-parameter for sikker behandling. Hvis du vælger Ja, fortsætter PowerShell med at fortolke siden ved hjælp af den ældre metode (fuld HTML-fortolkning), hvilket betyder, at indholdet og eventuelle integrerede scripts indlæses, som den plejede. Når du vælger Ja , betyder det grundlæggende, at du accepterer risikoen, og at tillade, at kommandoen kører, som den gjorde før, mens du vælger Nej (standard), stopper handlingen for at beskytte dig.

    • Interaktiv vs. scriptet brug: Introduktionen af denne prompt påvirker primært interaktiv brug. I interaktive sessioner får du vist advarslen og skal reagere. For automatiserede scripts (ikke-interaktive scenarier, f.eks. planlagte opgaver eller CI-pipelines) kunne denne prompt få scriptet til at hænge, mens der ventes på input. For at undgå dette anbefaler vi at opdatere sådanne scripts til eksplicit at bruge sikre parametre (se nedenfor), hvilket sikrer, at de ikke kræver manuel bekræftelse.

Tag affære

De fleste PowerShell-scripts og -kommandoer, der bruger kommandoen Invoke-WebRequest, fungerer fortsat med få eller ingen ændringer. Scripts, der f.eks. kun henter indhold eller fungerer med svarteksten som tekst eller data, påvirkes ikke og kræver ingen ændringer.

Hvis du har scripts, der påvirkes af denne ændring, kan du benytte en af følgende fremgangsmåder.

Mulighed 1: Brug den nye sikre standard

Der kræves ingen handling til hentning af indhold, hvis din typiske brug af kommandoen Invoke-WebRequest er til at hente indhold (f.eks. download af filer eller læsning af statisk tekst), og du ikke er afhængig af avanceret interaktion på webstedet eller HTML DOM-parsing. Den nye standardfunktionsmåde er mere sikker – scripts, der er integreret i webindhold, kører ikke uden din tilladelse – og dette er den anbefalede konfiguration til de fleste scenarier.

For interaktiv brug skal du blot svare Nej på den nye sikkerhedsprompt (eller trykke på Enter for at acceptere standarden) og køre kommandoen igen med parameteren -UseBasicParsing for sikkert at hente indholdet. Derved undgår du at udføre scriptkode på den hentede side. Hvis du ofte henter webindhold interaktivt, kan du overveje at bruge parameteren -UseBasicParsing som standard i dine kommandoer for at springe prompten helt over og sørge for maksimal sikkerhed.

For automatiserede scripts eller planlagte opgaver skal du opdatere dem til at medtage parameteren -UseBasicParsingInvoke-WebRequest-kald . Dette forhåndsvælger sikker funktionsmåde, så prompten ikke vises, og scriptet fortsætter med at køre uden afbrydelse. Ved at gøre dette sikrer du, at din automatisering kører problemfrit efter opdateringen, mens du stadig drager fordel af den forbedrede sikkerhed.

  • For scripts, der kører med indstillingen -NoProfile: Hvis scriptet har mange forekomster af Invoke-WebRequest-kald , skal du erklære $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true øverst i scriptet.
  • Når Invoke-WebRequest bruges sammen med parameteren -UseBasicParsing , er det ikke muligt at parse fuld dokumentobjektmodel (DOM) ved hjælp af Internet Explorer-komponenter (HTMLDocument Interface (mshtml)) .
Mulighed 2: Omstrukturer scripts for langsigtet sikkerhed

For scripts eller automatisering, der håndterer upålideligt eller offentligt webindhold og kræver behandling af HTML-strukturer eller formularer, bør du overveje at refaktorere eller opdatere dem af hensyn til langsigtet sikkerhed. I stedet for at bruge PowerShell til at fortolke og køre potentielt skadelige websidescripts, kan du:

  • Brug alternative fortolkningsmetoder eller biblioteker (behandl f.eks. indholdet af websiden som almindelig tekst eller XML ved hjælp af regex- eller XML/HTML-fortolkningsbiblioteker, der ikke udfører scripts).

  • Moderniser din tilgang til webinteraktioner, måske ved at bruge nyere PowerShell Core (version 7.x eller nyere), som ikke afhænger af Internet Explorers program og undgår at køre scripts, eller ved at bruge specialiserede webscraping-værktøjer, der håndterer indhold på en mere sikker måde. Begræns afhængigheden af Internet Explorer-specifikke funktioner, da Internet Explorer er udfaset. Planlæg at omskrive dele af dine scripts, der er afhængige af disse funktioner, så de kan fungere i et miljø, hvor webindhold håndteres sikkert.

    • Invoke-WebRequest i PowerShell Core (version 7.x eller nyere) understøtter ikke DOM-fortolkning ved hjælp af Internet Explorer-komponenter. Standardparsingen vil sikkert hente indholdet uden scriptudførelse.
  • Målet med refactoring er at opnå din nødvendige funktionalitet uden at udsætte dig selv for sikkerhedsrisici og derved omfavne de sikrere standardindstillinger, der introduceres af denne ændring.

Mulighed 3: Tilvælg ældre funktionsmåde (kun pålidelige scenarier)

Hvis du har et specifikt behov for at bruge kommandoen Invoke-WebRequest's komplette HTML-fortolkningsfunktioner (f.eks. interaktion med formularfelter eller skrabning af strukturerede data), og du har tillid til kilden til webindholdet, kan du stadig fortsætte med den ældre fortolkningsfunktionsmåde i hvert enkelt tilfælde. I interaktive sessioner betyder det blot, at du skal vælge Ja i bekræftelsesprompten for at tillade, at handlingen fortsætter. Du modtager en påmindelse om sikkerhedsrisikoen, hver gang du gør dette. Hvis du fortsætter uden parameteren -UseBasicParsing, bør det begrænses til scenarier, hvor du har fuld tillid til webindholdet (f.eks. interne webprogrammer, som du styrer, eller kendte sikre websteder).

Vigtig

Denne fremgangsmåde anbefales ikke til scripts, der kører mod ikke-pålideligt eller offentligt webindhold, fordi det igen introducerer risikoen for uovervåget scriptkørsel, som denne opdatering er beregnet til at reducere. For ikke-interaktiv automatisering er der heller ingen indbygget mekanisme til automatisk at give samtykke til prompten, så det anbefales ikke at stole på fuld fortolkning i scripts (ud over at det er risikabelt). Brug denne indstilling sparsomt og kun midlertidigt.

Ofte stillede spørgsmål

Påvirker denne ændring mine scripts?

I de fleste tilfælde fungerer scripts, der downloader filer eller henter webindhold som tekst, stadig. Hvis du vil undgå anmodningen, skal du tilføje parameteren -UseBasicParsing .

Scripts, der bruger avanceret HTML-fortolkning (f.eks. formularer eller DOM), kan hænge eller udskrive rå data i stedet for strukturerede objekter. Du skal skifte til grundlæggende fortolkning eller ændre dit script for at håndtere indhold anderledes.

Hvordan kan jeg undgå den nye bekræftelsesprompt i mine scripts?

Brug altid parameteren -UseBasicParsing sammen med kommandoen Invoke-WebRequest i PowerShell-scripts for at sikre sikker, ikke-interaktiv udførelse.

Kræver denne ændring nogen handling for ældre scripts?

Ja. Scripts, der afhænger af ældre fortolkning, skal opdateres for at tilvælge eller refaktorisere.

Hvordan afspejles denne ændring i hotpatch- og standardopdateringer?

Ændringen i PowerShell gælder for både standardopdateringer og hotpatch-opdateringer, hvilket medfører samme ændring af funktionsmåden.

Er denne ændring i overensstemmelse med PowerShell 7?

Ja. PowerShell 7 bruger allerede sikker fortolkning som standard.

Hvad skal jeg gøre med scripts eller moduler fra tredjepart?

Kontakt modulejere for at få supportplaner. Brug midlertidigt tilvalg for indhold, der er tillid til, under overførslen.

Hvordan gør jeg kontrollere, at mit miljø er klar?

Hvis du vil forberede og validere denne ændring, anbefaler vi, at du:

  • Identificer scripts ved hjælp af DOM-funktioner.
  • Test automatisering med den nye standard.
  • Begræns ældre tilmelding til kilder, der er tillid til.
  • Planlæg omstrukturering for indhold, der ikke er tillid til.