Share via


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 en Write-Output para que sea coherente con Windows PowerShell. (#9069)
  • Hacer que Join-String -InputObject 1,2,3 el resultado sea igual al 1,2,3 | Join-String resultado (#8611) (gracias @sethvs!)
  • Agregar -Stable a Sort-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 a Get-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 $DebugPreferenceen 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 en catch{ } 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 en localhost 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 y Enter-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 a Get-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 el Start-Transcript encabezado de transcripción (#8402) (gracias) @lukexjeremy!)
  • Se han agregado los cmdlets Enable-ExperimentalFeature y Disable-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 la non-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 y Enter-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 -Namede parámetros , -NoUserOverrides y -ListAvailable al Get-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 a Get-Date -UFormat (7630) (gracias) @britishben!)
  • Corrección Set-Service -Status Stopped para detener los servicios con dependencias (5525) (gracias). @zhenggu!)