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
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 interrumpeTest-Json
para archivos JSON y JSONC con comentarios. ConvertFrom-Json
soporte sigue usando Newtonsoft.Json.Schema para poder convertir archivos JSON con comentarios.
- Con este cambio,
- 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 usarsudo
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 usarsudo
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
yExport-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
enSelect-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 cmdletsSelect-Object
yGet-Unique
(#19683) (Gracias @ArmaanMcleod!)) -
Restart-Computer
yStop-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.
- Esta característica también agrega las propiedades FeedbackName, FeedbackTexty FeedbackAction a
- 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:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 cambió las siguientes características experimentales:
- PSCommandNotFoundSuggestion: esta característica ahora usa un proveedor de comentarios extensible en lugar de sugerencias codificadas de forma rígida (#18726)
Para obtener más información sobre las características experimentales, vea Using Experimental Features.