Compartir a través de


Novedades de PowerShell 7.4

PowerShell 7.4.7 incluye las siguientes características, actualizaciones y cambios importantes. PowerShell 7.4.7 se basa en .NET 8.0.12.

Para obtener una lista completa de los cambios, consulte el CHANGELOG de en el repositorio de GitHub.

Cambios importantes

  • Las imágenes de Docker de Nano Server no están disponibles para esta versión
  • Se ha agregado el parámetro ProgressAction a los parámetros comunes
  • Actualice algunas API de PowerShell para lanzar ArgumentException en lugar de ArgumentNullException cuando el argumento es una cadena vacía (#19215) (Gracias @xtqqczze!)
  • Quitar código relacionado con #requires -pssnapin (#19320)
  • Test-Json ahora usa JsonSchema.NET en lugar de Newtonsoft.Json.Schema.
    • Con este cambio, Test-Json ya no admite los esquemas anteriores de Draft 4. (#18141) (Gracias @gregsdennis!). Para obtener más información sobre los esquemas JSON, consulta la documentación sobre el Esquema JSON. Esto también interrumpe Test-Json para archivos JSON y JSONC con comentarios.
    • ConvertFrom-Json soporte sigue usando Newtonsoft.Json.Schema para poder convertir archivos JSON con comentarios.
  • La salida de Test-Connection ahora incluye información más detallada sobre las pruebas de conexión TCP
  • .NET introdujo cambios que afectaron a Test-Connection. El cmdlet ahora devuelve un error sobre la necesidad de usar sudo en plataformas Linux al usar un tamaño de búfer personalizado (#20369).
  • La característica experimental PSNativeCommandPreserveBytePipe ahora es estándar. PowerShell conserva ahora los datos de secuencia de bytes al redirigir la secuencia stdout de un comando nativo a un archivo o al canalización de datos de secuencia de bytes al flujo stdin de un comando nativo.
  • Cambie cómo se controlan las rutas de acceso relativas de al usar el parámetro RelativeBasePath (#19755) (Gracias
  • Quitar código PSv2 sin usar: quita la función TabExpansion (#18337)

Actualizaciones del instalador

El paquete MSI de Windows ahora proporciona una opción para deshabilitar la telemetría de PowerShell durante la instalación. Para obtener más información, consulte Instalación del paquete msi desde la línea de comandos.

Versiones actualizadas de PSResourceGet y PSReadLine

PowerShell 7.4 incluye Microsoft.PowerShell.PSResourceGet v1.0.1. Este módulo se instala en paralelo con PowerShellGet v2.2.5 y PackageManagement v1.4.8.1. Para obtener más información, consulte la documentación de Microsoft.PowerShell.PSResourceGet.

PowerShell 7.4 ahora incluye PSReadLine v2.3.4. Para obtener más información, consulte la documentación de PSReadLine.

Mejoras de finalización con tabulación

Muchas gracias a @MartinGC94 y a los demás por todo el trabajo en la mejora de la finalización con tabulación.

  • Se ha corregido el problema al completar el primer comando de un script con una expresión de matriz vacía (#18355)
  • Corregir la finalización del argumento posicional (#17796)
  • Priorice el parámetro predeterminado establecido al completar argumentos posicionales (#18755)
  • Mejorar el pseudoenlazar para parámetros dinámicos (#18030)
  • Se ha mejorado la inferencia de tipos de claves de la tabla hash (n.º 17907)
  • Corrección del error de inferencia de tipo para instrucciones de retorno vacías (#18351)
  • Mejora de la inferencia de tipos para Get-Random (#18972)
  • Corrección de la inferencia de tipos para todas las variables de ámbito (#18758)
  • Se ha mejorado la enumeración de tipos deducidos en la canalización (n.º 17799)
  • Se ha agregado finalización para valores en las comparaciones al comparar enumeraciones (n.º 17654)
  • Se ha agregado finalización de asignación de propiedades para enumeraciones (n.º 19178)
  • Se ha corregido la finalización de las propiedades de la variable PSCustomObject (n.º 18682)
  • Se ha corregido la finalización de miembros en el argumento de atributo (n.º 17902)
  • Excluir los alias de parámetro redundantes de los resultados de finalización (n.º 19382)
  • Se ha corregido la finalización de miembros de clase de clases con tipos base (n.º 19179)
  • Se ha agregado finalización para usar palabras clave (n.º 16514)
  • Reparar la fuga de variables TabExpansion2 al completar variables (n.º 18763)
  • Habilitar la finalización de variables en ámbitos de ScriptBlock (n.º 19819)
  • Reparar la finalización de la variable para la instrucción foreach (n.º 19814)
  • Reparar la prioridad de inferencia de tipos de variable (n.º 18691)
  • Reparar la finalización de miembros para la clase Enum de PowerShell (n.º 19740)
  • Reparar el análisis de literales de matriz en expresiones de índice en llamadas de método (n.º 19224)
  • Mejorar la finalización de la ruta de acceso (n.º 19489)
  • Corregir un error de indexación fuera del límite en CompleteInput para la entrada de script vacía (n.º 19501)
  • Mejorar el rendimiento de la finalización de variables (n.º 19595)
  • Mejorar la finalización de claves de tablas hash para asignaciones de variables restringidas de tipo, tablas hash anidadas y mucho más (n.º 17660)
  • Inferir la salida de la aplicación externa como cadenas (n.º 19193)
  • Actualizar la finalización de parámetros para que las enumeraciones excluyan los valores no permitidos por los atributos de ValidateRange (#17750) (Gracias @fflaten!)).
  • Corregir la finalización de parámetros dinámicos (#19510)
  • Agregar finalización para las variables asignadas por la instrucción Data (#19831)
  • Corrección de la expansión de tilde de la ñ (~) en sistemas Windows para $home a fin de evitar casos de uso importantes con comandos nativos (#21529)

Mejoras en los cmdlets web

Muchas gracias a @CarloToso y a otras personas por todo el trabajo sobre cómo mejorar los cmdlets web.

  • Corrección de la descompresión en los cmdlets web para incluir Brotli (#17955) (gracias @iSazonov!))
  • Los cmdlets web agregan 308 para redirigir los códigos y la limpieza pequeña (n.º 18536)
  • Complete la representación de la barra de progreso en Invoke-WebRequest cuando se complete o cancele la descarga (#18130)
  • Los cmdlets web obtienen el intervalo Retry-After de los encabezados de respuesta si el código de estado es 429 (n.º 18717)
  • Los cmdlets web establecen la codificación de conjunto de caracteres predeterminada en UTF8 (n.º 18219)
  • Se conserva WebSession.MaximumRedirection frente a cambios (n.º 19190)
  • WebCmdlets analiza la declaración XML para obtener el valor de codificación, si está presente. (#18748)
  • Corrección mediante xml -Body en cmdlets web sin codificación (n.º 19281)
  • Ajuste el comportamiento del método PUT a POST uno para el tipo de contenido predeterminado en WebCmdlets (#19152)
  • Se tiene en cuenta ContentType de encabezados en cmdlets web (n.º 19227)
  • Permitir conservar el método HTTP original agregando -PreserveHttpMethodOnRedirect a cmdlets web (#18894)
  • Los webcmdlets muestran un error en la redirección https a http (#18595)
  • Agregar el modificador AllowInsecureRedirect a cmdlets web (n.º 18546)
  • Se ha mejorado el mensaje detallado en cmdlets web cuando se desconoce la longitud del contenido (n.º 19252)
  • Compilar el URI relativo de los vínculos de la respuesta en Invoke-WebRequest (n.º 19092)
  • Corregir el redireccionamiento de -CustomMethod POST en WebCmdlets (#19111)
  • Eliminación de la respuesta anterior en Webcmdlets (#19117)
  • Mejorar el formato de los errores de xml y json Invoke-WebRequest (n.º 18837)
  • Agregar validateNotNullOrEmpty a los parámetros OutFile e InFile de cmdlets web (n.º 19044)
  • Se ha actualizado la lista de encabezados de httpKnownHeaderNames (n.º 18947)
  • Invoke-RestMethod -FollowRelLink corregir vínculos que contienen comas (#18829)
  • Se ha corregido un error al administrar el redireccionamiento y keepAuthorization en cmdlets web (n.º 18902)
  • Agregar StatusCode a HttpResponseException (n.º 18842)
  • Compatibilidad con conexiones HTTP persistentes en Cmdlets Web (#19249) (Gracias @stevenebutler!)
  • Limpieza menor Invoke-RestMethod (#19490)
  • Mejore el mensaje detallado de WebCmdlets para mostrar la versión HTTP correcta (#19616)
  • Agregar FileNameStar a MultipartFileContent en cmdlets web (n.º 19467)
  • Cambie el estado HTTP de 409 a 429 en WebCmdlets para obtener el intervalo de reintento del encabezado Retry-After. (#19622) (Gracias @mkht!)
  • Cambiar -TimeoutSec a -ConnectionTimeoutSeconds y agregar -OperationTimeoutSeconds a cmdlets web (n.º 19558) (Gracias a @stevenebutler!) otros cmdlets
  • Soporte para Ctrl+c cuando la conexión se bloquea al leer datos en WebCmdlets (#19330) (gracias @stevenebutler!))
  • Compatibilidad con el socket de dominio unix en WebCmdlets (#19343)

Otras mejoras del cmdlet

  • Test-Connection ahora devuelve un error sobre la necesidad de usar sudo en plataformas Linux al usar un tamaño de búfer personalizado (#20369)
  • Agregar tipos de salida a comandos Format (#18746) (Gracias @MartinGC94!)
  • Agregar atributos de tipo de salida para Get-WinEvent (#17948) (Gracias @MartinGC94!)
  • Agregue los parámetros Path y LiteralPath al cmdlet Test-Json (#19042) (Gracias @ArmaanMcleod!))
  • Agregue el parámetro NoHeader a los cmdlets ConvertTo-Csv y Export-Csv (#19108) (gracias @ArmaanMcleod!))
  • Se han agregado los parámetros Confirm y WhatIf a Stop-Transcript(#18731) (Gracias, @JohnLBevan!)
  • Agregue parámetro FuzzyMinimumDistance a Get-Command (#18261)
  • Se ha habilitado la aceptación de codificación ANSI por parte del parámetro Encoding en PowerShell ( 19298) (Gracias, @CarloToso!)
  • Agregar progreso a Copy-Item (#18735)
  • Update-Help ahora notifica un error al usar la referencia cultural implícita en sistemas que no son de EE. UU. (#17780) (Gracias @dkaszews!)
  • No requieras actividad cuando crees un registro de progreso completado (#18474) (Gracias @MartinGC94!))
  • No permitir valores negativos en los parámetros del cmdlet Get-Content: -Head y -Tail (#19715) (Gracias @CarloToso!)
  • Haga que Update-Help emita un error adecuado cuando la referencia cultural actual no esté asociada a un idioma (#19765) (Gracias a @josea!))
  • Permite combinar parámetros de -Skip y -SkipLast en Select-Object cmdlet. (#18849) (Gracias @ArmaanMcleod!)
  • Se agrega el cmdlet Get-SecureRandom (n.º 19587)
  • Set-Clipboard -AsOSC52 para el uso remoto (#18222) (Gracias @dkaszews!)
  • Se acelera la resolución de rutas relativas Resolve-Path (n.º 19171) (gracias a @MartinGC94!)
  • Se agregó el parámetro switch -CaseInsensitive a los cmdlets Select-Object y Get-Unique (#19683) (Gracias @ArmaanMcleod!))
  • Restart-Computer y Stop-Computer deben producir un error al no ejecutarse a través de sudo en Unix (#19824)

Mejoras del motor

Actualizaciones de $PSStyle

  • Agrega propiedades Dim y DimOff (#18653)
  • Se han agregado métodos estáticos a la clase PSStyle que asignan los valores ConsoleColor de primer plano y de fondo a secuencias de escape ANSI (#17938)
  • Los encabezados de tabla para los campos calculados tienen formato en cursiva de forma predeterminada
  • Agregue soporte para respetar $PSStyle.OutputRendering en host remoto (#19601)
  • Datos de telemetría actualizados para incluir el uso de módulos de CrescendoBuilt (#20371)

Otras actualizaciones del motor

  • Hacer que la clase de PowerShell no esté afiliada a Runspace al declarar el atributo NoRunspaceAffinity (#18138)
  • Agregue el atributo ValidateNotNullOrWhiteSpace (#17191) (Gracias @wmentha!)
  • Se ha agregado sqlcmd a la lista para pasar argumentos heredados (#18559)
  • Agregue la función cd~ (#18308) (gracias @GigaScratch!)
  • Se corrige el análisis de tipos de matriz en tipos genéricos (n.º 19205) (gracias a @MartinGC94!)
  • Se corrige el uso global de caracteres comodín en la raíz de las rutas de acceso del dispositivo (n.º 19442) (gracias a @MartinGC94!)
  • Agregar una API pública para obtener ubicaciones de elementos PSModulePath (#19422)
  • Corrección de la conversión incorrecta de cadena a tipo (#19560) (Gracias @MartinGC94!))
  • Corregir la ejecución lenta cuando se usan muchos puntos de interrupción (#14953) (gracias @nohwnd!)).
  • Quitar código relacionado con #requires -pssnapin (#19320)

Características experimentales

PowerShell 7.4 presenta las siguientes características experimentales:

  • PSFeedbackProvider: reemplaza el marco de sugerencias codificados de forma rígida por un proveedor de comentarios extensible.
    • Esta característica también agrega las propiedades FeedbackName, FeedbackTexty FeedbackAction a $PSStyle.Formatting que permiten cambiar el formato de los mensajes de comentarios.
  • PSModuleAutoLoadSkipOfflineFiles: la detección de módulos ahora omite los archivos marcados por proveedores de nube como no totalmente en el disco.
  • PSCommandWithArgs: se ha agregado compatibilidad para pasar argumentos a comandos como una sola cadena.

Las siguientes características experimentales se convirtieron en estándar:

PowerShell 7.4 cambió las siguientes características experimentales:

Para obtener más información sobre las características experimentales, vea Using Experimental Features.