Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
PowerShell 7.5.4 incluye las siguientes características, actualizaciones y cambios importantes. PowerShell 7.5.4 se basa en la versión de .NET 9.0.306.
Para ver la lista completa de cambios, consulte el REGISTRO DE CAMBIOS en el repositorio de GitHub. Para obtener más información sobre .NET 9, consulte Novedades de .NET 9.
Últimos cambios
- Corrección de los parámetros
-OlderThany-NewerThanparaTest-Pathal usarPathTypey el intervalo de fechas (#20942) (¡Gracias a @ArmaanMcleod!)- Anteriormente,
-OlderThanse omitía si se especificaban juntos
- Anteriormente,
- Cambio del valor predeterminado de
New-FileCatalog -CatalogVersiona 2 (#20428) (¡Gracias a @ThomasNieto!) - Bloqueo de la obtención de ayuda desde ubicaciones de red en sesiones de comunicación remota restringidas (#20593)
- El instalador de Windows ahora recuerda las opciones de instalación que se usan y las usa para inicializar las opciones de la siguiente instalación (#20420) (¡gracias, @reduckted!)
-
ConvertTo-Jsonahora serializaBigIntegercomo un número (#21000) (Gracias @jborean93!)
Módulos actualizados
PowerShell 7.5.4 incluye los siguientes módulos actualizados:
- Microsoft.PowerShell.PSResourceGet v1.1.1
- PSReadLine v2.3.6
Mejoras de finalización con tabulación
Muchas gracias a @ArmaanMcleod y a los demás colaboradores por todo el trabajo realizado para mejorar la finalización con tabulación.
- Revertir a la inferencia de tipos cuando no se puede recuperar el par clave-valor hashtable de la expresión segura (#21184) (¡gracias, @MartinGC94!)
- Se ha corregido la regresión al realizar la inferencia de tipos para
$_(#21223) (¡gracias, @MartinGC94!) - Expanda
~a$HOMEen Windows con finalización de pestañas (#21529) - No se completa al declarar el nombre de parámetro y el miembro de clase (#21182) (¡gracias, @MartinGC94!)
- Evitar la reserva a la finalización de archivos al completar la finalización con tabulación de nombres de tipo (#20084) (Gracias a @MartinGC94)
- Agregar el finalizador de argumentos a
-VersionparaSet-StrictMode(#20554) (¡Gracias a @ArmaanMcleod!) - Agregar el finalizador de argumentos
-VerbparaGet-Verb/Get-Commandy refactorizarGet-Verb(#20286) (Gracias @ArmaanMcleod) - Agregar el finalizador de argumentos
-VerbparaStart-Process(#20415) (Gracias a @ArmaanMcleod) - Añadir el finalizador de argumentos
-Scopepara los comandos*-Variable,*-Alias&*-PSDrive(#20451) (Gracias @ArmaanMcleod) - Agregar la finalización
-Modulepara los comandosSave-Help/Update-Help(#20678) (Gracias a @ArmaanMcleod)
Nuevos cmdlets
- Agregar cmdlets
ConvertTo-CliXmlyConvertFrom-CliXml(#21063) (Gracias @ArmaanMcleod!)
Mejoras en los cmdlets web
- Se ha corregido para permitir que
-PassThruy-Outfilefuncionen conjuntamente (#24086) - Agregue la propiedad
OutFileenWebResponseObject(#24047) - Mostrar nombre de archivo en
Invoke-WebRequest -OutFile -Verbose(#24041) - Corrección de WebCmdlets cuando
-Bodyse especifica, peroContentTypeno (#23952) (Gracias @CarloToso!) - Corrección de
Invoke-WebRequestpara notificar el tamaño correcto cuando se especifica-Resume(#20207) (Gracias a @LNKLEO!) - Corrección de los cmdlets web para permitir que las aplicaciones
WinFormfuncionen correctamente (#20606)
Otras mejoras de cmdlets
- Corrige
Out-GridViewreemplazando el uso deBinaryFormatterobsoleto por la implementación personalizada (#25559). - Habilitar
-NoRestartpara trabajar conRegister-PSSessionConfiguration(#23891) - Añadir los parámetros
IgnoreCommentsyAllowTrailingCommasal cmdletTest-Json(#23817) (Gracias @ArmaanMcleod!) - Get-Help puede notificar parámetros con el atributo
ValueFromRemainingArgumentscomo canalizables (#23871) - Cambiar el tipo de
LineNumberaulongenSelect-String(#24075) (Gracias @Snowman-25!) -
Get-Process: Eliminar el requisito de administrador de-IncludeUserName(21302) (Gracias @jborean93!) - Se ha corregido
Test-Path -IsValidpara comprobar si hay caracteres de nombre de archivo y ruta de acceso no válidos (#21358) - Agregar
RecommendedActiona la vistaConciseViewdel informe de errores (#20826) (¡gracias, @JustinGrote!) - Se ha agregado la barra de progreso para el cmdlet
Remove-Item(#20778) (¡gracias, @ArmaanMcleod!) - Corrección de
Test-Connectiondebido a cambios en .NET 8 (#20369) - Corrección del
Get-Servicemensaje de error que no terminaba para que incluya la categoría (#20276) - Agregar los parámetros
-Emptyy-InputObjectaNew-Guid(#20014) (¡Gracias a @CarloToso!) - Agregar el alias
ral parámetro-Recursepara el comandoGet-ChildItem(#20100) (¡Gracias a @kilasuit!) - Agregar los alias
LPaLiteralPathpara las funciones que aún faltan (#20820) - Agregar la reserva de localización implícita a
Import-LocalizedData(#19896) (¡Gracias a @chrisdent-de!) - Agregar
Aliasesa las propiedades que se muestran al dar formato al contenido de ayuda del parámetro devuelto porGet-Help(#20994) - Agregar
HelpUriaRemove-Service(#20476) - Corrección del bloqueo de finalización para el proveedor SCCM (#20815, #20919, #20915) (¡Gracias a @MartinGC94!)
- Corrección de la regresión en
Get-Contentcuando se usan-Tail 0y-Waitjuntos (#20734) (¡Gracias a @CarloToso!) - Corrección de
Start-Process -PassThrupara asegurarse de que la propiedadExitCodesea accesible para el objetoProcessdevuelto (#20749) (¡Gracias a @CodeCyclone!) - Corrección de
Group-Objectpara usar la referencia cultural actual para la salida (#20608) - Corrección de la salida de
Group-Objectmediante cadenas interpoladas (#20745) (¡Gracias a @mawosoft!) - Corrección de la representación de
DisplayRootpara la red dePSDrive(#20793) - Corrección del progreso de
Copy-Itempara que se muestre completado solo cuando se hayan copiado todos los archivos (#20517) - Corrección de la regresión de finalización de la ruta de acceso UNC (#20419) (¡Gracias a @MartinGC94!)
- Informe del error si se pasa una
-ExecutionPolicyno válida apwsh(#20460) - Agregar módulos WinGetCommandNotFound y CompletionPredictor para realizar un seguimiento del uso (21040)
- Agregar el parámetro DateKind a
ConvertFrom-Json(20925) (gracias @jborean93!) - Agregar DirectoryInfo al elemento OutputType para New-Item (#21126) (gracias @MartinGC94!)
- Corrección de la serialización de valores de matriz
Get-Error(#21085) (Gracia @jborean93!) - Corregir
Test-ModuleManifestpara que pueda usar una ruta de acceso UNC (#24115) - Corregir
Get-TypeDatapara escribir en la pipeline inmediatamente en lugar de recopilar datos primero (#24236) (Gracias @MartinGC94)) - Añadir el parámetro
-Forcea los cmdletsResolve-PathyConvert-Pathpara admitir archivos comodín ocultos #20981 (gracias @ArmaanMcleod!) - Establecer identificadores estándar explícitamente al iniciar un proceso con
-NoNewWindow(25324) - Haga que los miembros de instancia internos protegidos heredados sean accesibles en el ámbito de clase. (25547) (Gracias) @mawosoft!)
- Elimine la sugerencia aproximada antigua y corrija el nombre de archivo de script local #25330
- Corregir el método
PSMethodInvocationConstraints.GetHashCode(#25306) (Gracias @crazyjncsu!)
Mejoras del motor
- Mover el registro de la invocación del método .NET para después de realizar la conversión de tipo necesaria para los argumentos del método (#25357)
- Volver a AppLocker después de
WldpCanExecuteFile(#25305) - Iniciar y detener explícitamente el color de error ANSI (#24065) (Gracias @JustinGrote!))
- Mejorar la definición de sobrecarga de .NET de métodos genéricos (#21326) (Gracias @jborean93!)
- Optimizar la operación
+=de una recogida cuando se trata de una matriz de objetos (#23901) (Gracias @jborean93!) - Agregar telemetría para comprobar etiquetas específicas al importar un módulo (#20371)
- Agregar
PSAdapteryConsoleGuiToolsa la lista de permitidos de telemetría de carga del módulo (#20641) - Agregar módulo WinGet para realizar un seguimiento del uso (#21040)
- Asegurarse de que el nombre de archivo no es nulo al registrar eventos ETW de WDAC (#20910) (¡Gracias a @jborean93!)
- Corrección de cuatro regresiones introducidas por la característica de registro de WDAC (#20913)
- Dejar los identificadores de entrada, salida y error sin establecer cuando no se redirijan (#20853)
- Corrección de cmdlets de proxy de comunicación remota implícita para que actúen en parámetros comunes (#20367)
- Incluir la versión del módulo en los mensajes de error cuando no se encuentre el módulo (#20144) (¡Gracias a @ArmaanMcleod!)
- Corrección de
unixmodepara controlarsetuidystickycuando el archivo no es un ejecutable (#20366) - Se ha corregido el uso del ensamblado para usar Path.Combine al construir rutas de acceso de ensamblado (21169)
- Validar el valor para usar el espacio de nombres durante las comprobaciones semánticas para evitar declarar espacios de nombres no válidos (21162)
- Controlar la herramienta global especialmente cuando se añade
$PSHOMEa PATH (#24228)
Características experimentales
Las siguientes características experimentales se convirtieron en características estándar en PowerShell 7.5-rc.1:
Las siguientes características experimentales se incluyen en PowerShell 7.5-rc.1:
- PSRedirectToVariable: permitir el redireccionamiento a una variable (#20381)
- PSNativeWindowsTildeExpansion : agregar expansión de tilde para ejecutables nativos de Windows (#20402) (gracias) @domsleee!)
-
PSSerializeJSONLongEnumAsNumber -
ConvertTo-Jsonahora trata las enumeraciones de gran tamaño como números (#20999) (Gracias @jborean93!)
Mejoras en el rendimiento
PowerShell 7.5-rc.1 incluyó PR#23901 de @jborean93 que mejora el rendimiento de la operación de += para una matriz de objetos.
En el ejemplo siguiente se mide el rendimiento de los distintos métodos de agregar elementos a una matriz.
$tests = @{
'Direct Assignment' = {
param($count)
$result = foreach($i in 1..$count) {
$i
}
}
'List<T>.Add(T)' = {
param($count)
$result = [Collections.Generic.List[int]]::new()
foreach($i in 1..$count) {
$result.Add($i)
}
}
'Array+= Operator' = {
param($count)
$result = @()
foreach($i in 1..$count) {
$result += $i
}
}
}
5kb, 10kb | ForEach-Object {
$groupResult = foreach($test in $tests.GetEnumerator()) {
$ms = (Measure-Command { & $test.Value -Count $_ }).TotalMilliseconds
[pscustomobject]@{
CollectionSize = $_
Test = $test.Key
TotalMilliseconds = [Math]::Round($ms, 2)
}
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
}
$groupResult = $groupResult | Sort-Object TotalMilliseconds
$groupResult | Select-Object *, @{
Name = 'RelativeSpeed'
Expression = {
$relativeSpeed = $_.TotalMilliseconds / $groupResult[0].TotalMilliseconds
$speed = [Math]::Round($relativeSpeed, 2).ToString() + 'x'
if ($speed -eq '1x') { $speed } else { $speed + ' slower' }
}
} | Format-Table -AutoSize
}
Al ejecutar el script en PowerShell 7.4.6, verá que el uso del operador += es el método más lento.
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
5120 Direct Assignment 4.17 1x
5120 List<T>.Add(T) 90.79 21.77x slower
5120 Array+= Operator 342.58 82.15x slower
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
10240 Direct Assignment 0.64 1x
10240 List<T>.Add(T) 184.10 287.66x slower
10240 Array+= Operator 1668.13 2606.45x slower
Al ejecutar el script en PowerShell 7.5-rc.1, verá que el uso del operador += es mucho más rápido que en PowerShell 7.4.6. Ahora, también es más rápido que usar el método List<T>.Add(T).
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
5120 Direct Assignment 4.71 1x
5120 Array+= Operator 40.42 8.58x slower
5120 List<T>.Add(T) 92.17 19.57x slower
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
10240 Direct Assignment 1.76 1x
10240 Array+= Operator 104.73 59.51x slower
10240 List<T>.Add(T) 173.00 98.3x slower