PowerShell 5.1: Invoke-WebRequest: Estää komentosarjan suorittamisen verkkosisällöstä

Käytetään kohteeseen
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

Huomautus

  • Alkuperäinen julkaisupäivä: 9. joulukuuta 2025
  • KB-tunnus: 5074596

Huomautus

Tässä artikkelissa kuvataan muutos, joka vaikuttaa ensisijaisesti yrityksen tai IT:n hallitsemiin ympäristöihin, joissa PowerShell-komentosarjoja käytetään automatisointiin ja verkkosisällön hakemiseen. People users using devices in personal or home settings ei yleensä tarvitse ryhtyä mihinkään toimiin, sillä tällaiset skenaariot ovat harvinaisia IT-hallittujen ympäristöjen ulkopuolella.

Muutosloki
Muuta päivämäärää Muutoksen kuvaus
Joulukuu 20, 2025
  • Lisätty "Suojausvaroitus" "Yhteenveto"-osaan.
  • Lisätty seuraava kappale "Yhteenveto"-osioon selkeyden vuoksi:

    PowerShellin Invoke-WebRequest-komento tekee HTTP- tai HTTPS-pyynnön verkkopalvelimeen ja palauttaa tulokset. Tämä artikkeli dokumentoi koventuneen muutoksen, jossa Windows PowerShell 5.1 näyttää tarkoituksellisesti suojausvahvistuskehotteen, kun Invoke-WebRequest-komentoa käytetään verkkosivujen hakemiseen ilman erityisiä parametreja. Tämä ongelma ilmenee sen jälkeen, kun tuetut Windows-asiakkaat ja -palvelimet ovat asentaneet 9. joulukuuta 2025 ja sen jälkeen julkaistut Windows-Päivitykset. Lisätietoja on artikkelissa CVE-2025-54100.
  • Lisätty seuraavat luetelmakohdat "Automaattiset komentosarjat tai ajoitetut tehtävät" -kohtaan "Toimi"-osion vaihtoehdossa 1.
    • Komentosarjat, jotka suoritetaan no-profile-vaihtoehdolla: Jos komentosarjassa on useita Invoke-WebRequest-kutsujen esiintymiä, määritä $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true komentosarjan yläosassa.
    • Kun Invoke-WebRequest-funktiota käytetään UseBasicParsing-parametrin kanssa, täyden asiakirjaobjektimallin (DOM) jäsentäminen Internet Explorer -komponenteilla (HTMLDocument Interface (mshtml)) ei ole mahdollista.
  • Lisätty seuraava luettelomerkki vaihtoehdon 2 luettelomerkkikohtaan "Nykyaikaista lähestymistapasi verkkotoimintoihin" "Toimi"-osassa.
    • Invoke-Webrequest PowerShell Coressa (versio 7.x tai uudempi) ei tue DOM-jäsennystä Internet Explorer -komponenttien avulla. Sen oletusjäsennys hakee sisällön turvallisesti ilman komentosarjan suorittamista.

Yhteenveto

Windows PowerShell 5.1 näyttää nyt suojausvahvistuskehotteen, kun Invoke-WebRequest-komentoa käytetään verkkosivujen hakemiseen ilman erityisiä parametreja.

Huomautus

  • Suojausvaroitus: Komentosarjan suoritusriski jäsentää Invoke-WebRequest verkkosivun sisällön. Verkkosivun komentosarjakoodi saatetaan suorittaa, kun sivu jäsennetään.
  • SUOSITELTU TOIMINTO: Estä komentosarjakoodin suorittaminen -UseBasicParsing-valitsimella.
  • Haluatko jatkaa?

Tämä kehote varoittaa, että sivulla olevat komentosarjat voivat suoriutua jäsennyksen aikana, ja neuvoo käyttämään
-UseBasicParsing -parametria komentosarjojen suorittamisen välttämiseksi. Käyttäjien on valittava toiminnon jatkaminen tai peruuttaminen. Tämä muutos auttaa suojautumaan haitalliselta verkkosisällöltä edellyttämällä käyttäjän suostumusta ennen mahdollisesti riskialttiita toimia.

PowerShellin Invoke-WebRequest-komento tekee HTTP- tai HTTPS-pyynnön verkkopalvelimeen ja palauttaa tulokset. Tässä artikkelissa kerrotaan koventuvasta muutoksesta, jossa Windows PowerShell 5.1 näyttää tarkoituksellisesti suojauksen vahvistuskehotteen käytettäessä Invoke-WebRequest-komentoa verkkosivujen noutamiseen ilman erityisiä parametreja. Tämä ongelma ilmenee sen jälkeen, kun tuetut Windows-asiakkaat ja -palvelimet ovat asentaneet 9. joulukuuta 2025 ja sen jälkeen julkaistut Windows-Päivitykset. Lisätietoja on artikkelissa CVE-2025-54100.

Mikä muuttui?

  • Aikaisempi toiminta

    • Täydellinen DOM (Document Object Model) -jäsennys käyttäen Internet Explorer -komponentteja (HTMLDocument Interface (mshtml)), jotka voivat suorittaa komentosarjoja ladatusta sisällöstä.
  • Uusi toiminta

    • Suojauksen vahvistuskehote: Kun olet asentanut 9. joulukuuta 2025 tai sen jälkeen julkaistut Windows-päivitykset, Invoke-WebRequest-komennon (tunnetaan myös nimellä curl) suorittaminen PowerShell 5.1:ssä käynnistää suojauskehotteen (kun erityistä parametria ei käytetä). Komentosarjojen suoritusriskistä varoittava kehote tulee näkyviin PowerShell-konsoliin. 

      Tämä tarkoittaa sitä, että PowerShell pysähtyy varoittaakseen, että ilman varotoimia verkkosivun komentosarjan sisältö voidaan suorittaa järjestelmässä käsittelyn aikana. Jos painat Enter-näppäintä (tai valitset Ei), toiminto peruutetaan oletusarvon mukaisesti turvallisuuden vuoksi. PowerShell näyttää viestin, että se peruutettiin tietoturvasyistä, ja ehdottaa komennon suorittamista uudelleen käyttämällä
      -UseBasicParsing -parametri turvallista käsittelyä varten. Jos valitset Kyllä, PowerShell jäsentää sivun vanhempaa menetelmää käyttäen (täysi HTML-jäsennys), mikä tarkoittaa, että se lataa sisällön ja kaikki upotetut komentosarjat entiseen tapaan. Kyllä-vaihtoehdon valitseminen tarkoittaa, että hyväksyt riskin ja annat komennon suorittaa kuten ennenkin, kun taas Ei (oletus) -valinta pysäyttää toiminnon suojatakseen sinua.

    • Vuorovaikutteinen vs. komentosarjakäyttö: Tämän kehotteen käyttöönotto vaikuttaa ensisijaisesti vuorovaikutteiseen käyttöön. Vuorovaikutteisissa istunnoissa näet varoituksen ja sinun on vastattava. Automaattisissa komentosarjoissa (ei-vuorovaikutteisissa skenaarioissa, kuten ajoitetuissa tehtävissä tai CI-putkissa) tämä kehote voi aiheuttaa komentosarjan jumiutumisen syötettä odotettaessa. Tämän välttämiseksi suosittelemme päivittämään tällaiset komentosarjat käyttämään eksplisiittisesti turvallisia parametreja (katso alla) ja varmistamaan, että ne eivät vaadi manuaalista vahvistusta.

Toimi

Useimmat Invoke-WebRequest-komentoa käyttävät PowerShell-komentosarjat ja -komennot toimivat edelleen ilman mitään muutoksia. Esimerkiksi komentosarjat, jotka vain lataavat sisältöä tai toimivat vastauksen tekstin kanssa tekstinä tai tietona, eivät vaikuta eivätkä vaadi muutoksia.

Jos sinulla on komentosarjoja, joihin tämä muutos vaikuttaa, käytä jotakin seuraavista tavoista.

Vaihtoehto 1: Käytä uutta suojattua oletusasetusta

Sisällön noutaminen ei vaadi toimenpiteitä, jos Invoke-WebRequest-komentoa käytetään tavallisesti sisällön (kuten tiedostojen lataamisen tai staattisen tekstin lukemisen) noutamiseen, etkä käytä sivuston lisätoimia tai HTML DOM -jäsennystä. Uusi oletustoiminta on turvallisempi – verkkosisältöön upotettuja komentosarjoja ei suoriteta ilman lupaasi – ja tämä on suositeltu määritys useimmissa skenaarioissa.

Jos haluat käyttää vuorovaikutteisuutta, vastaa vain Ei uuteen suojauskehotteeseen (tai hyväksy oletusasetus painamalla Enter-näppäintä) ja nouda sisältö turvallisesti suorittamalla komento uudelleen parametrilla -UseBasicParsing. Näin vältät komentosarjakoodin suorittamisen noudetulla sivulla. Jos haet verkkosisältöä usein vuorovaikutteisesti, voit käyttää komennoissa oletusarvoisesti - UseBasicParsing-parametria , jotta voit ohittaa kehotteen kokonaan ja varmistaa parhaan mahdollisen turvallisuuden.

Päivitä automaattisten komentosarjojen tai ajoitettujen tehtävien tapauksessa niihin -UseBasicParsing-parametriInvoke-WebRequest-kutsuissa. Tämä esivalitsee turvallisen toiminnon niin, että kehote ei tule näkyviin ja komentosarja toimii keskeytyksettä. Näin varmistat, että automaatiosi toimii saumattomasti päivityksen jälkeen ja hyödynnät silti parannettua suojausta.

  • Komentosarjat, jotka suoritetaan -NoProfile-vaihtoehdon kanssa: Jos komentosarjassa on useita Invoke-WebRequest-kutsujen esiintymiä, määritä $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true komentosarjan yläosassa.
  • Kun Invoke-WebRequest-funktiota käytetään UseBasicParsing-parametrin kanssa, täyden asiakirjaobjektimallin (DOM) jäsentäminen Internet Explorer -komponenteilla (HTMLDocument Interface (mshtml)) ei ole mahdollista.
Vaihtoehto 2: Komentosarjojen uudelleenmuokkaus pitkän aikavälin suojauksen takaamiseksi

Jos komentosarja tai automaatio käsittelee epäluotettavaa tai julkista verkkosisältöä ja edellyttää HTML-rakenteiden tai -lomakkeiden käsittelyä, harkitse niiden optimointia tai päivittämistä pitkäaikaisen turvallisuuden takaamiseksi. Sen sijaan, että luottaisit PowerShelliin mahdollisesti vaarallisten verkkosivujen komentosarjojen jäsentämisessä ja suorittamisessa, voit:

  • Käytä vaihtoehtoisia jäsennysmenetelmiä tai kirjastoja (käsittele esimerkiksi verkkosivun sisältöä pelkkänä tekstinä tai XML-tiedostona, käyttämällä regex- tai XML/HTML-jäsennyskirjastoja, jotka eivät suorita komentosarjoja).

  • Nykyaikaista lähestymistapasi verkkovuorovaikutuksiin esimerkiksi käyttämällä uudempaa PowerShell Corea (versio 7.x tai uudempi), joka ei käytä Internet Explorer -moduulia ja estää komentosarjojen suorittamista, tai käyttämällä erityisiä verkon kaavintatyökaluja, jotka käsittelevät sisältöä turvallisemmin. Rajoita riippuvuutta Internet Explorer -kohtaisiin ominaisuuksiin, sillä Internet Explorer on vanhentunut. Suunnittele komentosarjojesi sellaisten osien uudelleenkirjoitus, jotka ovat riippuvaisia näistä ominaisuuksista, jotta ne toimivat ympäristössä, jossa verkkosisältöä käsitellään turvallisesti.

    • Invoke-WebRequest PowerShell Coressa (versio 7.x tai uudempi) ei tue DOM-jäsennystä Internet Explorer -komponenttien avulla. Sen oletusjäsennys hakee sisällön turvallisesti ilman komentosarjan suorittamista.
  • Refaktoroinnin tavoitteena on saavuttaa tarvitsemasi toiminnot altistamatta itseäsi tietoturvariskeille, ja siten omaksua tämän muutoksen tuomat turvallisemmat oletusasetukset.

Vaihtoehto 3: Vanhojen toimintojen käyttöönotto (vain luotetut skenaariot)

Jos sinun on erityisesti käytettävä Invoke-WebRequest-komennon kaikkia HTML-jäsennysominaisuuksia (esimerkiksi käsitellä lomakekenttiä tai kerätä rakenteisia tietoja) ja luotat verkkosisällön lähteeseen, voit silti jatkaa vanhan jäsennystoiminnon käyttöä tapauskohtaisesti. Vuorovaikutteisissa istunnoissa tämä tarkoittaa vain sitä, että toimintoa voi jatkaa valitsemalla vahvistuskehotteessa arvoksi Kyllä . Saat muistutuksen tietoturvariskistä aina, kun teet niin. Jatkaminen ilman -UseBasicParsing-parametria tulisi rajoittaa tilanteisiin, joissa luotat verkkosisältöön täysin (esimerkiksi hallinnassasi oleviin sisäisiin verkkosovelluksiin tai tunnettuihin turvallisiin sivustoihin).

Tärkeää

Tätä tapaa ei suositella komentosarjoille, jotka suoritetaan ei-luotettua tai julkista verkkosisältöä vastaan, koska se aiheuttaa uudelleen hiljaisen komentosarjojen suorittamisen riskin, jota tämän päivityksen on tarkoitus lieventää. Ei-vuorovaikutteisessa automaatiossa ei myöskään ole sisäänrakennettua mekanismia, joka suostuisi kehotteeseen automaattisesti, joten täydelliseen jäsennykseen luottaminen komentosarjoissa ei ole suositeltavaa (sen lisäksi, että se on riskialtista). Käytä tätä vaihtoehtoa säästeliäästi ja vain väliaikaisesti.

Usein kysyttyjä kysymyksiä

Vaikuttaako tämä muutos komentosarjoihini?

Useimmissa tapauksissa komentosarjat, jotka lataavat tiedostoja tai hakevat verkkosisältöä tekstinä, toimivat edelleen. Voit välttää kehotteen lisäämällä -UseBasicParsing-parametrin .

Komentosarjat, joissa käytetään edistynyttä HTML-jäsennystä (kuten lomakkeet tai DOM), saattavat jumittua tai tulostaa raakadataa jäsenneltyjen objektien sijaan. Sinun on siirryttävä perusjäsennykseen tai muokattava komentosarjaa, jotta voit käsitellä sisältöä eri tavalla.

Miten voin välttää uuden vahvistuskehotteen komentosarjoissani?

Käytä aina -UseBasicParsing-parametriaInvoke-WebRequest-komennon kanssa PowerShell-komentosarjoissa varmistaaksesi turvallisen, ei-vuorovaikutteisen suorittamisen.

Edellyttääkö tämä muutos mitään toimia vanhojen komentosarjojen kohdalla?

Kyllä. Vanhasta jäsennyksestä riippuvat komentosarjat on päivitettävä, jotta ne suostuvat ohjelmaan tai muokkaavat asetuksia.

Miten tämä muutos näkyy muistinkorjauspaketeissa ja vakiopäivityksissä?

PowerShellin muutos koskee sekä vakiopäivityksiä että muistinkorjauspäivityksiä, joten tuloksena saadaan sama toimintamuutos.

Onko tämä muutos yhdenmukainen PowerShell 7:n kanssa?

Kyllä. PowerShell 7 käyttää jo oletusarvoisesti suojattua jäsennystä.

Mitä minun pitäisi tehdä, jos käsittelen kolmannen osapuolen komentosarjoja tai moduuleja?

Ota yhteyttä moduulien omistajiin saadaksesi tukisopimuksia. Käytä tilapäistä suostumusta luotetun sisällön kohdalla siirron aikana.

Ohjevalikko varmistaa, että ympäristöni on valmis?

Jotta voit valmistautua tähän muutokseen ja vahvistaa sen, suosittelemme tekemään seuraavat toimet:

  • Tunnista komentosarjat DOM-ominaisuuksien avulla.
  • Testaa automaatiota uudella oletusasetuksella.
  • Rajoita aiempien versioiden suostumukset luotettuihin lähteisiin.
  • Suunnittele optimointi epäluotettavalle sisällölle.