Data de publicação original: 9 de dezembro de 2025
ID do KB: 5074596
Resumo
Windows PowerShell 5.1 agora exibe um prompt de confirmação de segurança ao usar o comando Invoke-WebRequest para buscar páginas da Web sem parâmetros especiais. Esse prompt adverte que os scripts na página podem ser executados durante a análise e aconselha o uso do parâmetro -UseBasicParsing mais seguro para evitar qualquer execução de script. Os usuários devem optar por continuar ou cancelar a operação. Essa alteração ajuda a proteger contra conteúdo da Web mal-intencionado, exigindo o consentimento do usuário antes de ações potencialmente arriscadas.
Essa alteração afeta principalmente ambientes corporativos ou gerenciados por TI em que os scripts do PowerShell são usados para automação e recuperação de conteúdo da Web. Pessoas usar dispositivos em configurações pessoais ou domésticas geralmente não precisam tomar nenhuma ação, pois esses cenários são incomuns fora de implantações gerenciadas de TI.
O que mudou?
-
Comportamento anterior
-
Análise completa do DOM (Modelo de Objeto de Documento) usando componentes de Explorer da Internet (mshtml)), que poderiam executar scripts de conteúdo baixado.
-
-
Novo comportamento
-
Prompt de confirmação de segurança: Depois de instalar as atualizações do Windows lançadas em ou após 9 de dezembro de 2025, executar o comando Invoke-WebRequest (também conhecido como curl) no PowerShell 5.1 disparará um prompt de segurança (quando nenhum parâmetro especial for usado). O prompt é exibido no console do PowerShell com um aviso sobre o Risco de Execução de Script. Isso significa que o PowerShell está fazendo uma pausa para avisar que, sem precauções, o conteúdo do script da página da Web poderá ser executado em seu sistema quando ele for processado. Por padrão, se você pressionar Enter (ou escolher Não), a operação será cancelada por segurança. O PowerShell mostrará uma mensagem de que ele foi cancelado devido a preocupações de segurança e sugere executar novamente o comando usando o parâmetro -UseBasicParsing para processamento seguro. Se você escolher Sim, o PowerShell continuará analisando a página usando o método mais antigo (análise completa de HTML), o que significa que ele carregará o conteúdo e todos os scripts inseridos como costumava fazer. Essencialmente, escolher Sim significa que você está aceitando o risco e permitindo que o comando seja executado como antes, ao escolher Não (o padrão) interrompe a ação para protegê-lo.
-
Uso interativo vs. Scripted: A introdução desse prompt afeta principalmente o uso interativo. Em sessões interativas, você verá o aviso e terá que responder. Para scripts automatizados (cenários não interativos, como tarefas agendadas ou pipelines de CI), esse prompt pode fazer com que o script fique suspenso aguardando a entrada. Para evitar isso, recomendamos atualizar esses scripts para usar explicitamente parâmetros seguros (confira abaixo), garantindo que eles não exijam confirmação manual.
-
Tome medidas
A maioria dos scripts e comandos do PowerShell que usam o comando Invoke-WebRequest continuará funcionando com pouca ou nenhuma modificação. Por exemplo, scripts que apenas baixam conteúdo ou funcionam com o corpo da resposta como texto ou dados não são afetados e não exigem alterações.
Se você tiver scripts afetados por essa alteração, use uma das abordagens a seguir.
Nenhuma ação necessária se o uso típico do comando Invoke-WebRequest for buscar conteúdo (como baixar arquivos ou ler texto estático) e você não depender de interação avançada do site ou análise HTML DOM. O novo comportamento padrão é mais seguro: os scripts inseridos no conteúdo da Web não serão executados sem sua permissão e essa é a configuração recomendada para a maioria dos cenários.
Para uso interativo, basta responder Não ao novo prompt de segurança (ou pressionar Enter para aceitar o padrão) e executar novamente seu comando com o parâmetro -UseBasicParsing para recuperar o conteúdo com segurança. Isso evitará a execução de qualquer código de script na página buscada. Se você buscar conteúdo da Web com frequência interativamente, considere usar o parâmetro -UseBasicParsing por padrão em seus comandos para ignorar o prompt completamente e garantir a segurança máxima.
Para scripts automatizados ou tarefas agendadas, atualize-os para incluir o parâmetro -UseBasicParsing em chamadas Invoke-WebRequest. Isso pré-seleciona o comportamento seguro para que o prompt não apareça e seu script continue sendo executado sem interrupção. Ao fazer isso, você garante que sua automação seja executada perfeitamente após a atualização enquanto ainda aproveita a segurança aprimorada.
Para scripts ou automação que lidam com conteúdo web não confiável ou público e exigem processamento de estruturas ou formulários HTML, considere refatorá-los ou atualizá-los para segurança de longo prazo. Em vez de confiar no PowerShell para analisar e executar scripts de página da Web potencialmente perigosos, você pode:
-
Use métodos ou bibliotecas de análise alternativos (por exemplo, trate o conteúdo da página da Web como texto simples ou XML, usando bibliotecas de análise regex ou XML/HTML que não executam scripts).
-
Modernize sua abordagem para interações da Web, talvez usando o PowerShell Core mais recente (versão 7.x ou posterior) que não depende do mecanismo do Explorer da Internet e evita a execução de scripts ou usando ferramentas de raspagem da Web especializadas que lidam com o conteúdo com mais segurança.
-
Limitar a dependência de recursos específicos do Explorer da Internet, uma vez que o Explorer da Internet é preterido. Planeje re-gravar partes de seus scripts que dependem desses recursos para que possam funcionar em um ambiente em que o conteúdo da Web é tratado com segurança.
-
O objetivo com a refatoração é alcançar a funcionalidade necessária sem se expor aos riscos de segurança, adotando assim os padrões mais seguros introduzidos por essa alteração.
Se você tiver uma necessidade específica de usar os comandos Invoke-WebRequest com recursos completos de análise HTML (como interagir com campos de formulário ou raspar dados estruturados) e confiar na origem do conteúdo da Web, você ainda poderá prosseguir com o comportamento de análise herdado caso a caso. Em sessões interativas, isso significa simplesmente escolher Sim no prompt de confirmação para permitir que a operação continue. Você receberá um lembrete do risco de segurança sempre que o fizer. Continuar sem o parâmetro -UseBasicParsing deve ser limitado a cenários em que você confia totalmente no conteúdo da Web (por exemplo, aplicativos Web internos sob seu controle ou sites seguros conhecidos).
Importante: Essa abordagem não é recomendada para scripts em execução contra conteúdo da Web não confiável ou público, pois reintroduz o risco de execução de script silencioso que essa atualização destina-se a atenuar. Além disso, para automação não interativa, não há nenhum mecanismo interno para consentir automaticamente com o prompt, portanto, confiar na análise completa em scripts não é aconselhável (além de ser arriscado). Use essa opção com moderação e apenas como uma medida temporária.
Perguntas frequentes
Para a maioria dos casos, os scripts que baixam arquivos ou buscam conteúdo da Web como texto ainda funcionarão; adicione o parâmetro -UseBasicParsing para evitar prompts. Scripts usando análise html avançada (como formulários ou DOM) podem travar ou produzir dados brutos em vez de objetos estruturados; você precisará alternar para análise básica ou modificar seu script para lidar com o conteúdo de forma diferente.
Use sempre o parâmetro -UseBasicParsing com o comando Invoke-WebRequest em scripts do PowerShell para garantir uma execução segura e não interativa.
Sim. Os scripts, dependendo da análise herdada, devem ser atualizados para optar por entrar ou refatorar.
A alteração no PowerShell aplicável a atualizações padrão e atualizações de hotpatch, resultando na mesma alteração de comportamento.
Sim. O PowerShell 7 já usa a análise segura por padrão.
Entre em contato com os proprietários do módulo para obter planos de suporte. Use o opt-in temporariamente para conteúdo confiável durante a migração.
Para se preparar e validar essa alteração, recomendamos que você:
-
Identifique scripts usando recursos DOM.
-
Testar a automação com o novo padrão.
-
Limitar o opt-in herdado a fontes confiáveis.
-
Planeje a refatoração para conteúdo não confiável.