Novedades de PowerShell 7.3
PowerShell 7.3 es la siguiente versión estable, integrada en .NET 7.0.
PowerShell 7.3 incluye las características, las actualizaciones y los cambios importantes que se indican a continuación.
Últimos cambios y mejoras
- En esta versión, las API de Windows se actualizaron o quitaron para el cumplimiento, lo que significa que PowerShell 7.3 no se ejecuta en Windows 7. Aunque ya no se admite Windows 7, las compilaciones anteriores podrían ejecutarse en Windows 7.
- PowerShell Direct para Hyper-V solo se admite en Windows 10, a partir de la versión 1809.
Test-Connection
se ha interrumpido debido a un cambio importante intencionado en .NET 7. Se realiza su seguimiento por #17018.- Adición del bloque
clean
al bloque de script como elemento del mismo nivel abegin
,process
yend
para permitir una limpieza de recursos sencilla (n.º 15177) - Cambio del valor predeterminado de
$PSStyle.OutputRendering
a Host - Se ha hecho que
Out-String
yOut-File
mantengan la entrada de cadena sin cambios (n.º 17455) - Se ha movido la definición de datos de tipo de System.Security.AccessControl.ObjectSecurity al módulo Microsoft.PowerShell.Security (n.º 16355) (¡Gracias @iSazonov!)!)
- Antes de este cambio, un usuario no necesita importar explícitamente el módulo Microsoft.PowerShell.Security para usar las propiedades de código definidas para una instancia de System.Security.AccessControl.ObjectSecurity.
- Después de este cambio, un usuario debe importar explícitamente el módulo Microsoft.PowerShell.Security para poder usar esas propiedades y métodos de código.
Mejoras de finalización con tabulación
- PowerShell 7.3 incluye PSReadline 2.2.6, que habilita IntelliSense predictivo de forma predeterminada. Para más información, vea Acerca de PSReadLine.
- Corrección de la finalización de tabulación dentro del bloque de script especificado para
ValidateScriptAttribute
. (N.º 14550) (¡Gracias @MartinGC94!)!) - Se ha agregado la finalización con tabulación para las etiquetas de bucle después de
break
/continue
(n.º 16438) (¡Gracias @MartinGC94!)!) - Mejora de la finalización de la tabla hash en varios escenarios (n.º 16498) (¡Gracias @MartinGC94!)!)
- Expansión de parámetros
- Parámetro Arguments para
Invoke-CimMethod
- Parámetro FilterHashtable para
Get-WinEvent
- Parámetro Property para los cmdlets CIM
- Quita los duplicados de los escenarios de finalización de miembros.
- Compatibilidad con las barras diagonales en la finalización del recurso compartido de red (ruta de acceso UNC) (n.º 17111) (¡Gracias @sba923!)!)
- Mejora de la finalización automática de miembros (n.º 16504) (¡Gracias @MartinGC94!)!)
- Clasificación por orden de prioridad de las finalizaciones ValidateSet sobre enumeraciones de parámetros (n.º 15257) (¡Gracias @MartinGC94!)!)
- Se ha agregado compatibilidad con la inferencia de tipos para métodos genéricos con parámetros de tipo (n.º 16951) (¡Gracias @MartinGC94!)!)
- Se ha mejorado la inferencia de tipos y finalizaciones (n.º 16963) (¡Gracias @MartinGC94!)!)
- Permite que los métodos se muestren en los resultados de finalización de
ForEach-Object -MemberName
. - Impide la finalización en expresiones que devuelven void, como
([void](""))
. - Permite que los constructores de clase no predeterminados se muestren cuando la finalización de la clase se basa en AST.
- Permite que los métodos se muestren en los resultados de finalización de
- Se ha mejorado la inferencia de tipos para
$_
(n.º 17716) (¡Gracias @MartinGC94!)!) - Se ha corregido la inferencia de tipos para ICollection (n.º 17752) (¡Gracias @MartinGC94!)!)
- Se ha evitado la eliminación de las llaves al completar variables (n.º 17751) (¡Gracias @MartinGC94!)!)
- Se ha agregado la finalización de expresiones de índice para diccionarios (n.º 17619) (¡Gracias @MartinGC94!)!)
- Se ha corregido la finalización de tipos para los tokens de atributo (n.º 17484) (¡Gracias @MartinGC94!)!)
- Se ha mejorado la finalización de tabulación de parámetros dinámicos (n.º 17661)(¡Gracias @MartinGC94!)!)
- Se ha evitado enlazar parámetros posicionales al completar el parámetro delante del valor (n.º 17693) (¡Gracias @MartinGC94!)!)
Se ha mejorado el control de errores
- Establecimiento de
$?
correctamente para la expresión de comando con redireccionamientos (n.º 16046) - Corrección de un error de conversión al usar
$PSNativeCommandUseErrorActionPreference
(n.º 15993) - Respeto opcional del control de errores del comando nativo
ErrorActionPreference
(n.º 15897) - Especificar la ruta de acceso ejecutable como
TargetObject
para el código de salida distinto de cero ErrorRecord (n.º 16108) (¡Gracias @rkeithhill!)!)
Mejoras de sesión y comunicación remota
- Agregar
-Options
al PSRP mediante comandos SSH para permitir pasar las opciones de OpenSSH directamente (n.º 12802) (¡Gracias @BrannenGH!)!) - Se ha agregado el parámetro
-ConfigurationFile
apwsh
para permitir iniciar un nuevo proceso con la configuración de sesión definida en un archivo.pssc
(n.º 17447) - Se ha agregado compatibilidad para usar
New-PSSessionConfigurationFile
en plataformas que no sean de Windows (n.º 17447)
Se han actualizado los cmdlets:
- Adición del parámetro
-HttpVersion
a los cmdlets web (n.º 15853) (¡Gracias @hayhay27!)!) - Adición de compatibilidad con cmdlets web para etiquetas de entrada abiertas (n.º 16193) (¡Gracias @farmerau!)!)
- Corrección de
ConvertTo-Json -Depth
para permitir 100 como máximo (n.º 16197) (¡Gracias @KevRitchie!)!) - Mejora del control de variables al llamar a
Invoke-Command
con la expresión$using:
(n.º 16113) (¡Gracias @dwtaber!)!) - Se ha agregado
-StrictMode
aInvoke-Command
para permitir que se especifique el modo strict al invocar el comando localmente (n.º 16545) (¡Gracias @Thomas-Yu!)!) - Adición del bloque
clean
al bloque de script como elemento del mismo nivel abegin
,process
yend
para permitir una limpieza de recursos sencilla (n.º 15177) - Se ha agregado el modificador
-Amended
al cmdletGet-CimClass
(n.º 17477) (¡Gracias @iSazonov)!) - Se ha cambiado
ConvertFrom-Json -AsHashtable
para usar la tabla hash ordenada (n.º 17405) - Se han quitado secuencias de escape ANSI en cadenas antes de enviarlas a
Out-GridView
(n.º 17664) - Se ha agregado el parámetro Milliseconds a
New-TimeSpan
(n.º 17621) (¡Gracias @NoMoreFood!)!) - Visualización de parámetros opcionales al mostrar definiciones de método y sobrecargas (n.º 13799) (¡Gracias @eugenesmlv!)!)
- Permiso para que los comandos se sigan ejecutando incluso si el directorio de trabajo actual ya no existe (n.º 17579)
- Se ha agregado compatibilidad con HTTPS con
Set-AuthenticodeSignature -TimeStampServer
(n.º 16134) (¡Gracias @Ryan-Hutchison-USAF!)!) - Representación de números decimales en una tabla mediante la referencia cultural actual (n.º 17650)
- Adición del acelerador de tipos ordenado para OrderedDictionary (n.º 17804) (¡Gracias @fflaten!)!)
- Adición de
find.exe
al comportamiento de enlace de argumentos heredado para Windows (n.º 17715) - Adición de un modificador
-noprofileloadtime
a pwsh (n.º 17535) (¡Gracias @rkeithhill!)!)
Para ver la lista completa de cambios, consulte el registro de cambios en el repositorio de GitHub.
Características experimentales
En PowerShell 7.3, se han estandarizado las siguientes características experimentales:
PSAnsiRenderingFileInfo
: Esta característica agrega el miembro$PSStyle.FileInfo
y permite colorear tipos de archivo específicos.PSCleanBlock
: agrega el bloqueclean
al bloque de script como nodo del mismo nivel abegin
,process
yend
para permitir una limpieza de recursos sencilla.PSAMSIMethodInvocationLogging
: extiende los datos que se envían a AMSI para su inspección para incluir todas las invocaciones de miembros del método .NET.PSNativeCommandArgumentPassing: ahora, PowerShell usa la propiedad ArgumentList del objeto StartProcessInfo en lugar del mecanismo anterior de reconstrucción de una cadena al invocar un ejecutable nativo.
PowerShell 7.3.1 agrega
sqlcmd.exe
a la lista de comandos nativos en Windows que usan el estiloLegacy
de paso de argumentos.PSExec
: agrega el nuevo cmdlet deSwitch-Process
(aliasexec
) para ofrecer compatibilidad conexec
para sistemas que no son de Windows.PowerShell 7.3.1 cambió el alias
exec
a una función que encapsulaSwitch-Process
. La función permite pasar parámetros al comando nativo que podría haber enlazado erróneamente con el parámetro WithCommand.
PowerShell 7.3 presenta las siguientes características experimentales:
- PSNativeCommandErrorActionPreference:
$PSNativeCommandUseErrorActionPreference
agrega la variable para permitir que los errores generados por los comandos nativos sean errores de PowerShell.
Se han eliminado las siguientes características experimentales de PowerShell 7.3:
- La característica experimental
PSNativePSPathResolution
ya no se admite. - La característica experimental
PSStrictModeAssignment
ya no se admite.
Para más información sobre las características experimentales, consulte Uso de características experimentales en PowerShell.