Compartir a través de


Novedades en PowerShell Core 6.2

La versión PowerShell Core 6.2 se centró en mejoras de rendimiento, corrección de errores y mejoras de cmdlet y lenguaje más pequeñas que mejoran la calidad. Para ver la lista completa de mejoras, consulta nuestros registros detallados de cambios en GitHub.

Características experimentales

Anteriormente, activamos el soporte para Funciones Experimentales. En la versión 6.2, tenemos cuatro funciones experimentales para probar. Por favor, proporcionad su opinión para que podamos mejorar y decidir si la función merece la pena promocionarla a estatus de mainstream.

Úsalo Get-ExperimentalFeature para obtener una lista de características experimentales disponibles. Puedes activar o desactivar estas funciones con Enable-ExperimentalFeature y Disable-ExperimentalFeature.

Sugerencias de comando no encontrado

Esta función utiliza el emparejamiento difuso para encontrar sugerencias de comandos o cmdlets que puedas haber escrito mal.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Example

En este ejemplo, el nombre del cmdlet mal escrito coincide con varias sugerencias de lo más probable al 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.

Agrupación Implícita de Remoto

Al usar remotidos implícitos en una pipeline, PowerShell trata cada comando de forma independiente. Los objetos se serializan repetidamente y de-serialized se situan entre el cliente y el sistema remoto durante la ejecución de la canalización.

Con esta función, PowerShell analiza la tubería para determinar si el comando es seguro de ejecutar y si existe en el sistema objetivo. Cuando es cierto, PowerShell ejecuta toda la tubería remotamente y solo serializa y de-serializes los resultados vuelven al cliente.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Una prueba real de Get-Process | Sort-Object over localhost disminuye de 10-15 segundos a 20-30 milisegundos. La función solo necesita estar activada en el cliente. No se requieren cambios en el servidor.

Conducción temporal

Enable-ExperimentalFeature -Name PSTempDrive

Si usas PowerShell Core en diferentes sistemas operativos, descubrirás que la variable de entorno para encontrar el directorio temporal es diferente en Windows, macOS y Linux. Con esta función, obtienes una llamada Temp:PSDrive que se mapea automáticamente a la carpeta temporal del sistema operativo que estás usando.

Example

PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!

Ten en cuenta que los comandos nativos de archivo (como ls en Linux) no conocen PSDrives y no verán este Temp: disco.

Expansión de abreviaturas

Se espera que los cmdlets de PowerShell tengan sustantivos descriptivos. Esto da lugar a nombres largos que son más difíciles de escribir. Esta función te permite simplemente escribir los caracteres mayúsculos del cmdlet y usar el completado de tabulación para encontrar una coincidencia.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Example

PS> i-arsavsf

Si pulsas tab y tienes instalado el módulo Azure PowerShell Az , se completará automáticamente para:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Nota:

Esta función está pensada para usarse de forma interactiva. No se pueden ejecutar formas abreviadas de cmdlets. Esta función no sustituye a los alias.

Cambios disruptivos

  • Corregir -NoEnumerate el comportamiento para Write-Output que sea coherente con PowerShell de Windows. (#9069)
  • Haz Join-String -InputObject 1,2,3 que el resultado sea igual al 1,2,3 | Join-String resultado (#8611) (Gracias @sethvs!)
  • Añadir -Stable a Sort-Object pruebas relacionadas (#7862) (Gracias @KirkMunro!)
  • Mejora Start-Sleep el cmdlet para aceptar fracciones de segundo (#8537) (Gracias @Prototyyppi!)
  • Cambiar la tabla hashable para que use OrdinalIgnoreCase para que esté case-insensitive en todas las culturas (#8566)
  • Fix LiteralPath in Import-Csv para vincular a Get-ChildItem la salida (#8277) (Gracias @iSazonov!)
  • Ya no se salta una columna sin nombre si se usa el delimitador de doble comilla en Import-Csv (#7899) (Gracias @Topping!)
  • Get-ExperimentalFeature Ya no tiene -ListAvailable switch (#8318)
  • El parámetro de depuración ahora se establece $DebugPreference en Continuar en lugar de Inquire (#8195) (Gracias @KirkMunro!)
  • Honor -OutputFormat si se especifica en comandos codificados no interactivos, redirigidos y usados con pwsh (#8115)
  • Carga el conjunto desde la ruta base del módulo antes de intentar cargar desde el GAC (#8073)
  • Eliminar tilde de los paquetes de vista previa para Linux (#8244)
  • Procesamiento de movimientos antes -WorkingDirectory del procesamiento de perfiles (#8079)
  • No añadir PATHEXT variable de entorno en Unix (#7697) (Gracias @iSazonov!)

Problemas conocidos

  • El remoto en plataformas Windows IOT ARM tiene un problema al cargar módulos. Véase (#8053)

Actualizaciones y correcciones generales

  • Activar la completación de tabulaciones insensibles a mayúsculas minúsculas para archivos y carpetas en el sistema de archivos sensible a mayúsculas minúsculas (#8128)
  • Haz públicos PSVersionInfo.PSVersion y PSVersionInfo.PSEdition (#8054) (Gracias @KirkMunro!)
  • Inferencia de tipo de adición para $_ / $PSItem in catch{ } blocks (#8020) (Gracias @vexx32!)
  • Corregir la inferencia de tipo de invocación de métodos estáticos (#8018) (Gracias @SeeminglyScience!)
  • Crear tipos inferidos para Select-Object, Group-Object, PSObject y Hashtable (#7231) (Gracias @powercode!)
  • Método de llamada de soporte con ByRef-like parámetros de tipo (#7721)
  • Manejar el caso en que la ruta del módulo PowerShell de Windows ya esté en el PSModulePath del entorno (#7727)
  • Habilitar SecureString los cmdlets para no Windows almacenando el texto plano (#9199)
  • Mejorar el mensaje de error en versiones no Windows al importar clixml con securestring (#7997)
  • Añadiendo parámetro RespondiTo a Send-MailMessage (#8727) (Gracias @replicaJunction!)
  • Añadir mensaje Obsoleto a Send-MailMessage (#9178)
  • Corrección Restart-Computer para trabajar localhost cuando WinRM no esté presente (#9160)
  • Error de finalización de Start-Job lanzamiento cuando PowerShell está alojado (#9128)
  • Añadir aceleradores y sufijos tipo C# para ushort, uint, ulong y short literals (#7813) (Gracias @vexx32!)
  • Se añadieron nuevos sufijos para los literales numéricos - véase about_Numeric_Literals (#7901) (Gracias @vexx32!)
  • Reportar correctamente el nivel de impacto cuando SupportsShouldProcess no esté configurado en 'true' (#8209) (Gracias @vexx32!)
  • Problemas con el conjunto de caracteres de solicitud de corrección en los comandos web (#8742) (Gracias @markekraus!)
  • Arreglar el problema de Expect 100-continue con los Web Cmdlets (#8679) (Gracias @markekraus!)
  • Solucionar el problema de bloqueo de archivos con los webcommandlets (#7676) (Gracias @Claustn!)
  • Arreglar el problema de análisis de la página de códigos en Invoke-RestMethod (#8694) (Gracias @markekraus!)
  • Refactorizar ConvertTo-Json para exponer JsonObject.ConvertToJson como una API pública (#8682)
  • Añade profundidad máxima configurable con ConvertFrom-Json -Depth (#8199) (Gracias @louistio!)
  • Añadir el parámetro EscapeHandling en ConvertTo-Json el cmdlet (#7775) (Gracias @iSazonov!)
  • Añadir -CustomPipeName a pwsh y Enter-PSHostProcess (#8889)
  • Habilitar la creación de enlaces simbólicos relativos en Windows con New-Item (#8783)
  • Permitir que los usuarios de Windows en modo desarrollador creen enlaces simbólicos sin elevación (#8534)
  • Permitir Write-Information aceptar $null (#8774)
  • Corrección Get-Help para funciones avanzadas con contenido de ayuda MAML (#8353)
  • Solucionar Get-Help el problema de PSTypeName con -Parameter cuando solo se declara un parámetro (#8754) (Gracias @pougetat!)
  • Corrección del cálculo de tokens para Get-Help ejecutarse en ScriptBlock y recibir ayuda con comentarios. (#8238) (Gracias @hubuk!)
  • Cambiar Get-Help el parámetro de -Parameter cmdlet para que acepte arreglos de cadenas (#8454) (Gracias @sethvs!)
  • Resuelve el PAGER si su ruta contiene espacios (#8571) (Gracias @pougetat!)
  • Añadir un prompt al uso de less en la función 'ayuda' para indicar al usuario cómo salir (#7998)
  • Añadir enum de soporte y tipos de personajes en Format-Hex cmdlet (#8191) (Gracias @iSazonov!)
  • Eliminar ShouldProcess de Format-Hex (#8178)
  • Añadir nuevos parámetros de Offset y Count y Format-Hex refactorizar el cmdlet (#7877) (Gracias @iSazonov!)
  • Permite 'name' como clave de alias para 'label' en ConvertTo-Html, permite que la entrada 'width' sea un entero (#8426) (Gracias @mklement0!)
  • Haz que las propiedades calculadas basadas en bloques de script funcionen de nuevo en ConvertTo-Html (#8427) (Gracias @mklement0!)
  • Añadir un cmdlet Join-String para crear texto a partir de la entrada del pipeline (#7660) (Gracias @powercode!)
  • Fix Join-String cmdlet FormatString parameter logic (#8449) (Gracias @sethvs!)
  • Volver Clear-Host a usar $RAWUI y despejar a trabajar sobre remoting (#8609)
  • Cambiar Clear-Host a llamada [console]::clear sencilla y eliminar el alias claro de Unix (#8603)
  • Fix LiteralPath in Import-Csv para vincular a Get-ChildItem la salida (#8277) (Gracias @iSazonov!)
  • la función de ayuda no debería usar el buscapersonas para AliasHelpInfo (#8552)
  • Añadir -UseMinimalHeader a para Start-Transcript minimizar la cabecera de transcripción (#8402) (Gracias @lukexjeremy!)
  • Add Enable-ExperimentalFeature y Disable-ExperimentalFeature cmdlets (#8318)
  • Expone todos los cmdlets de PSDiagnostics si logman.exe está disponible (#8366)
  • Eliminar el parámetro Persist de New-PSDrive la non-Windows plataforma (#8291) (Gracias @lukexjeremy!)
  • Añadir soporte para cd + (#7206) (Gracias @bergmeister!)
  • Habilitar Set-Location -LiteralPath para trabajar con carpetas nombradas - y + (#8089)
  • Test-Path retorna $false cuando se le da un valor vacío o $null de camino (#8080) (Gracias @vexx32!)
  • Permitir que se devuelva el parámetro dinámico incluso si el camino no coincide con ningún proveedor (#7957)
  • Soporte Get-PSHostProcessInfo y Enter-PSHostProcess en plataformas Unix (#8232)
  • Reducir asignaciones en Get-Content el cmdlet (#8103) (Gracias @iSazonov!)
  • Habilitar Add-Content el acceso de lectura con otras herramientas mientras se escribe contenido (#8091)
  • Get/Add-Content lanza un error mejorado al apuntar a un contenedor (#7823) (Gracias @kvprasoon!)
  • Añadir -Nameparámetros y -NoUserOverrides-ListAvailable a Get-Culture cmdlet (#7702) (Gracias @iSazonov!)
  • Añadir un atributo unificado para completar el parámetro de codificación . (#7732) (Gracias @ThreeFive-O!)
  • Permitir identificaciones numéricas y nombre de páginas de códigos registradas en parámetros de codificación (#7636) (Gracias @iSazonov!)
  • Corrección Rename-Item -Path con personaje comodín (#7398) (Gracias @kwkam!)
  • Cuando existe Start-Transcript un archivo, el archivo vacío en lugar de borrarlo (#8131) (Gracias @paalbra!)
  • Haz Add-Type archivos de código abierto con FileAccess.Read y FileShare.Read explícitamente (#7915) (Gracias @IISResetMe!)
  • Solución Enter-PSSession -ContainerId para la última versión de Windows (#7883)
  • Asegúrate de que la propiedad NestedModules se llene con Test-ModuleManifest (#7859)
  • Añadir %F caja a Get-Date -UFormat (#7630) (Gracias @britishben!)
  • Arreglo Set-Service -Status Stopped para detener servicios con dependencias (#5525) (Gracias @zhenggu!)