Novedades de PowerShell Core 6.2
La versión PowerShell Core 6.2 se centró en mejoras de rendimiento, correcciones de errores y otras actualizaciones más pequeñas relativas a los cmdlet y el lenguaje en favor de la calidad. Para ver una lista completa de las mejoras, consulte nuestros registros de cambios detallados en GitHub.
Características experimentales
Ya habíamos habilitado con anterioridad la compatibilidad con las características experimentales. En la versión 6.2, tenemos cuatro características experimentales para probar. Háganos llegar sus comentarios para que podamos realizar mejoras y decidir si vale la pena promocionar la función al estado general.
Use Get-ExperimentalFeature
para obtener una lista de las características experimentales disponibles. Puede habilitar o deshabilitar estas características con Enable-ExperimentalFeature
y Disable-ExperimentalFeature
.
Sugerencias para comandos no encontrados
Esta característica utiliza la coincidencia aproximada para buscar sugerencias para aquellos comandos o cmdlets que puede haber escrito de manera incorrecta.
Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion
Ejemplo
En este ejemplo, el nombre del cmdlet mal escrito coincide de manera aproximada con varias sugerencias que se ordenan de la más probable a la menos probable.
Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.
Procesamiento por lotes de comunicación remota implícita
Cuando se usa la comunicación remota implícita en una canalización, PowerShell trata cada comando en la canalización de forma independiente. Los objetos se serializan repetidamente y de-serialized
entre el cliente y el sistema remoto a través de la ejecución de la canalización.
Con esta característica, PowerShell analiza la canalización para determinar si es seguro ejecutar el comando y existe en el sistema de destino. Cuando es true, PowerShell ejecuta toda la canalización de forma remota y solo serializa y de-serializes
los resultados al cliente.
Enable-ExperimentalFeature -Name PSImplicitRemotingBatching
Una prueba real de Get-Process | Sort-Object
sobre localhost disminuye de 10-15 segundos a 20-30 milisegundos. Solo debe habilitarse la característica en el cliente. No es preciso realizar cambios en el servidor.
Unidad temporal
Enable-ExperimentalFeature -Name PSTempDrive
Si usa PowerShell Core en diferentes sistemas operativos, verá que la variable de entorno para buscar el directorio temporal es diferente en Windows, macOS y Linux. Con esta característica, obtendrá un PSDrive denominado Temp:
que se asigna automáticamente a la carpeta temporal para el sistema operativo que está usando.
Ejemplo
PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!
Tenga en cuenta que los comandos de archivo nativos (como ls
en Linux) no son compatibles con PSDrive y no verán esta unidad Temp:
.
Expansión de abreviatura
Se espera que los cmdlets de PowerShell tengan nombres descriptivos. Esto da como resultado nombres largos que son más difíciles de escribir. Esta característica permite simplemente escribir los caracteres en mayúsculas del cmdlet y usar la finalización con tabulación para encontrar una coincidencia.
Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion
Ejemplo
PS> i-arsavsf
Si presiona el tabulador y tiene instalado el módulo Az de Azure PowerShell, se completará automáticamente a lo siguiente:
PS> Import-AzRecoveryServicesAsrVaultSettingsFile
Nota
Esta característica está pensada para usarse interactivamente. No se pueden ejecutar las formas abreviadas de los cmdlets. Esta característica no sirve para reemplazar los alias.
Últimos cambios
- Se ha corregido el comportamiento de
-NoEnumerate
enWrite-Output
para que sea coherente con Windows PowerShell. (#9069) - Hacer que
Join-String -InputObject 1,2,3
el resultado sea igual al1,2,3 | Join-String
resultado (#8611) (gracias @sethvs!) - Agregar
-Stable
aSort-Object
y pruebas relacionadas (n.º 7862) (gracias) @KirkMunro!) - Mejora del
Start-Sleep
cmdlet para aceptar fracciones de segundo (#8537) (gracias) @Prototyyppi!) - Se ha cambiado la tabla hash para que utilice OrdinalIgnoreCase para que sea
case-insensitive
en todas las referencias culturales (#8566) - Se ha corregido LiteralPath en
Import-Csv
para enlazar aGet-ChildItem
la salida (#8277) (gracias). @iSazonov!) - Ya no omite una columna sin nombre si se usa el delimitador de comillas dobles en
Import-Csv
(#7899) (gracias @Topping!) -
Get-ExperimentalFeature
ya no tiene el conmutador-ListAvailable
(#8318) - El parámetro de depuración ahora establece
$DebugPreference
en Continue en lugar de Inquire (#8195) (Gracias). @KirkMunro!) - Se respeta
-OutputFormat
si se especifica en un comando no interactivo, redirigido, codificado que se usa con pwsh (#8115) - Se carga el ensamblado desde la ruta de acceso base del módulo antes de intentar cargar desde la GAC (#8073)
- Se ha quitado la tilde de los paquetes en versión preliminar de Linux (#8244)
- Se ha movido el procesamiento de
-WorkingDirectory
antes del procesamiento de perfiles (#8079) - No agregar
PATHEXT
variable de entorno en Unix (#7697) (gracias) @iSazonov!)
Problemas conocidos
- La comunicación remota en plataformas ARM de Windows IOT presenta un problema al cargar los módulos. Consulte (#8053)
Actualizaciones y correcciones generales
- Se ha habilitado la finalización con tabulación que no distingue mayúsculas y minúsculas para los archivos y carpetas del sistema de archivos que distingue mayúsculas y minúsculas (#8128)
- Haga que PSVersionInfo.PSVersion y PSVersionInfo.PSEdition sean públicos (#8054) (gracias @KirkMunro!)
- Agregar inferencia de tipos para
$_
/$PSItem
encatch{ }
bloques (#8020) (gracias) @vexx32!) - Corrección de la inferencia de tipos de invocación de método estático (#8018) (gracias) @SeeminglyScience!)
- Create tipos inferidos para
Select-Object
,Group-Object
, PSObject y Hashtable (#7231) (gracias)@powercode!) - Se ha añadido compatibilidad para el método de llamada con parámetros de tipo
ByRef-like
(#7721) - Se ha controlado el caso en que la ruta de acceso del módulo de Windows PowerShell ya está en el PSModulePath del entorno (#7727)
- Se han habilitado los cmdlets
SecureString
para entornos que no son de Windows mediante el almacenamiento del texto sin formato (#9199) - Se ha mejorado el mensaje de error en sistemas que no son Windows al importar clixml con SecureString (#7997)
- Agregar el parámetro ReplyTo a
Send-MailMessage
(8727) (gracias) @replicaJunction!) - Se ha agregado el mensaje Obsolete a
Send-MailMessage
(#9178) - Se ha corregido
Restart-Computer
para que funcione enlocalhost
cuando WinRM no está presente (#9160) - Se ha generado error de terminación
Start-Job
cuando se hospeda PowerShell (#9128) - Agregar aceleradores y sufijos de tipo de estilo de C# para ushort, uint, ulong y literales cortos (#7813) (gracias @vexx32!)
- Se han agregado nuevos sufijos para literales numéricos: vea about_Numeric_Literals (#7901) (gracias). @vexx32!)
- Informe correcto del nivel de impacto cuando SupportsShouldProcess no está establecido en "true" (#8209) (Gracias @vexx32!)
- Corrección de problemas de conjunto de caracteres de solicitud en cmdlets web (#8742) (gracias) @markekraus!)
- Se ha corregido un problema esperado
100-continue
con los cmdlets web (#8679) (gracias). @markekraus!) - Se ha corregido el problema de bloqueo de archivos con cmdlets web (#7676) (gracias). @Claustn!)
- Corrección del problema de análisis de páginas de códigos en
Invoke-RestMethod
(#8694) (gracias) @markekraus!) - Se ha refactorizado
ConvertTo-Json
para exponer JsonObject.ConvertToJson como una API pública (#8682) - Agregar profundidad máxima configurable en
ConvertFrom-Json
con -Depth (#8199) (Gracias) @louistio!) - Adición del parámetro EscapeHandling en
ConvertTo-Json
el cmdlet (#7775) (gracias) @iSazonov!) - Se ha agregado
-CustomPipeName
a pwsh yEnter-PSHostProcess
(#8889) - Se ha habilitado la creación de vínculos simbólicos relativos en Windows con
New-Item
(#8783) - Se permite a los usuarios de Windows en modo de desarrollador la creación de vínculos simbólicos sin elevación (#8534)
- Se ha habilitado
Write-Information
para aceptar$null
(#8774) - Se ha corregido
Get-Help
para las funciones avanzadas con el contenido de ayuda de Azure MAML (#8353) - Se ha corregido
Get-Help
el problema de PSTypeName con -Parameter cuando solo se declara un parámetro (#8754) (gracias). @pougetat!) - Se ha corregido el cálculo de token para
Get-Help
ejecutando en ScriptBlock para la ayuda de comentarios. (#8238) (Gracias @hubuk!) - Cambie
Get-Help
el cmdlet -Parameter para que acepte matrices de cadenas (#8454) (gracias). @sethvs!) - Resolver PAGER si su ruta de acceso contiene espacios (#8571) (gracias) @pougetat!)
- Se ha agregado símbolo del sistema para el uso de
less
en la función "help" para indicar al usuario cómo cerrar (#7998) - Adición de tipos de enumeración y caracteres de compatibilidad en
Format-Hex
el cmdlet (#8191) (gracias) @iSazonov!) - Se ha quitado ShouldProcess de
Format-Hex
(#8178) - Agregue nuevos parámetros Offset y Count a
Format-Hex
y refactorice el cmdlet (#7877) (gracias). @iSazonov!) - Permitir 'name' como clave de alias para 'label' en
ConvertTo-Html
, permitir que la entrada 'width' sea un entero (#8426) (Gracias @mklement0!) - Hacer que las propiedades calculadas basadas en scriptblock vuelvan a funcionar en
ConvertTo-Html
(#8427) (gracias) @mklement0!) - Se ha agregado un cmdlet
Join-String
para crear texto a partir de la entrada de canalización (#7660) (gracias). @powercode!) - Se ha corregido
Join-String
la lógica del parámetro FormatString del cmdlet (#8449) (gracias). @sethvs!) - Se ha vuelto a cambiar
Clear-Host
para que use$RAWUI
y se ha desactivado para que funcione en la comunicación remota (#8609) - Se ha cambiado
Clear-Host
para que llame simplemente a[console]::clear
y se ha quitado el alias de Unix (#8603) - Se ha corregido LiteralPath en
Import-Csv
para enlazar aGet-ChildItem
la salida (#8277) (gracias). @iSazonov!) - La función de ayuda no debe usar el elemento de paginación para AliasHelpInfo (#8552)
- Agregar
-UseMinimalHeader
a para minimizar elStart-Transcript
encabezado de transcripción (#8402) (gracias) @lukexjeremy!) - Se han agregado los cmdlets
Enable-ExperimentalFeature
yDisable-ExperimentalFeature
(#8318) - Se han expuesto todos los cmdlets de PSDiagnostics si logman.exe está disponible (#8366)
- Quitar el parámetro Persist de
New-PSDrive
en lanon-Windows
plataforma (8291) (gracias) @lukexjeremy!) - Se ha agregado compatibilidad con
cd +
(7206) (gracias). @bergmeister!) - Se ha permitido que
Set-Location -LiteralPath
funcione con carpetas denominadas - y + (#8089) -
Test-Path
devuelve$false
cuando se proporciona un valor vacío o$null
de ruta de acceso (#8080) (gracias). @vexx32!) - Se permite que un parámetro dinámico se devuelva incluso si la ruta de acceso no coincide con ningún proveedor (#7957)
- Se ha agregado compatibilidad con
Get-PSHostProcessInfo
yEnter-PSHostProcess
en plataformas Unix (#8232) - Reducción de las asignaciones en
Get-Content
el cmdlet (8103) (gracias) @iSazonov!) - Se ha habilitado
Add-Content
para compartir el acceso de lectura con otras herramientas al escribir contenido (#8091) -
Get/Add-Content
produce un error mejorado al tener como destino un contenedor (#7823) (gracias). @kvprasoon!) - Adición
-Name
de parámetros ,-NoUserOverrides
y-ListAvailable
alGet-Culture
cmdlet (#7702) (gracias) @iSazonov!) - Se ha agregado un atributo unificado para la finalización del parámetro Encoding. (#7732) (Gracias @ThreeFive-O!)
- Permitir identificadores numéricos y nombre de páginas de códigos registradas en parámetros de codificación (#7636) (gracias @iSazonov!)
- Corrección
Rename-Item -Path
con carácter comodín (7398) (gracias) @kwkam!) - Al usar
Start-Transcript
y el archivo existe, el archivo vacío en lugar de eliminar (#8131) (gracias @paalbra!) - Crear
Add-Type
archivos código abierto con FileAccess.Read y FileShare.Read explícitamente (#7915) (gracias)@IISResetMe!) - Se ha corregido
Enter-PSSession -ContainerId
para el Windows más reciente (#7883) - Se ha asegurado que la propiedad NestedModules se rellene por
Test-ModuleManifest
(#7859) - Agregar
%F
mayúsculas y minúsculas aGet-Date
-UFormat (7630) (gracias) @britishben!) - Corrección
Set-Service -Status Stopped
para detener los servicios con dependencias (5525) (gracias). @zhenggu!)