Microsoft añade advertencia en PowerShell 5.1 para impedir que los scripts web se ejecuten "en silencio"

Después de las actualizaciones de Windows, publicadas el 9 de diciembre de 2025, Windows PowerShell 5.1 comenzó a mostrar una advertencia de seguridad al ejecutar el comando Invoke-WebRequest cuando se usa sin parámetros especiales. El sistema indica claramente que durante el análisis de la página web descargada pueden ejecutarse scripts, y sugiere una alternativa más segura: ejecutar con el parámetro -UseBasicParsing, que excluye la ejecución de scripts. El cambio está descrito en el documento KB 5074596 y tiene como objetivo proteger a los usuarios del contenido web malicioso, que podría activarse sin ser detectado.
Antes, PowerShell 5.1 podía realizar un análisis completo de HTML mediante componentes de Internet Explorer y el modelo DOM, y ese enfoque teóricamente permitía que scripts procedentes del contenido descargado se ejecutaran durante el procesamiento de la página. Ahora, tras la instalación de las actualizaciones de diciembre, el comportamiento cambia: al invocar Invoke-WebRequest de forma habitual aparece en la consola una confirmación con una advertencia sobre el riesgo de ejecución de scripts.
Por defecto, si se pulsa Enter o se elige No, la operación se cancelará "por motivos de seguridad", y PowerShell sugerirá volver a ejecutar el comando con -UseBasicParsing para un procesamiento seguro. Si el usuario elige explícitamente Yes, el comando continuará en el modo antiguo con un análisis HTML completo, es decir, con ese mismo comportamiento arriesgado que la actualización intenta evitar.
Además, Microsoft llama la atención sobre la diferencia entre el uso interactivo y la automatización. En una sesión interactiva la confirmación que aparece es solo un paso adicional para el usuario. Pero en escenarios sin entrada, por ejemplo en tareas programadas o en pipelines de CI, esa solicitud puede dejar en espera la ejecución del script a la espera de una respuesta. Por ello, para la automatización se recomienda especificar previamente el parámetro seguro -UseBasicParsing en todas las invocaciones de Invoke-WebRequest, de modo que la confirmación no aparezca y la ejecución no se interrumpa.
En la mayoría de los casos, según describe el documento, no será necesario cambiar nada: si el script simplemente descarga el contenido o trata la respuesta como texto o datos, continuará ejecutándose. Los problemas son más probables para quienes se apoyaban en el análisis "inteligente" de HTML, en formularios y en las capacidades del DOM: esos scripts pueden quedarse colgados por la solicitud de confirmación o empezar a devolver objetos estructurados distintos a los habituales.
Como próximos pasos se propone o bien mantener el nuevo comportamiento seguro y usar -UseBasicParsing, o bien rehacer los scripts para que no dependan del análisis arriesgado de páginas web y no intenten procesar contenido potencialmente no confiable. Para los casos raros y de confianza queda la posibilidad de aceptar manualmente el comportamiento antiguo, pero se enfatiza que para la automatización no interactiva no existe un mecanismo de "aceptación automática" y no conviene confiar en ello.