Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
PowerShell 7.0 es una edición de código abierto y multiplataforma (Windows, macOS y Linux), diseñada para gestionar entornos heterogéneos y nube híbrida.
En esta versión, presentamos varias funciones nuevas, entre ellas:
- Paralelización de tubería con
ForEach-Object -Parallel - Nuevos operadores:
- Operador ternario:
a ? b : c - Operadores de cadenas de oleoductos:
||y&& - Operadores condicionales nulos:
??y??=
- Operador ternario:
- Una vista de error simplificada y dinámica y
Get-Errorun cmdlet para facilitar la investigación de errores - Una capa de compatibilidad que permite a los usuarios importar módulos en una sesión implícita de PowerShell de Windows
- Notificaciones automáticas de nueva versión
- La capacidad de invocar recursos DSC directamente desde PowerShell 7 (experimental)
Para ver la lista completa de características y correcciones, consulta los registros de cambios.
¿Dónde puedo instalar PowerShell?
Actualmente, PowerShell 7 soporta los siguientes sistemas operativos en x64, entre ellos:
- Windows 8.1 y 10
- Windows Server 2012, 2012 R2, 2016 y 2019
- macOS 10.13+
- Red Hat Enterprise Linux (RHEL) / CentOS 7
- Fedora 30+
- Debian 9
- Ubuntu LTS 16.04+
- Alpine Linux 3.8+
Además, PowerShell 7.0 soporta versiones ARM32 y ARM64 de Debian, Ubuntu y ARM64 Alpine Linux.
Consulta las instrucciones de instalación de tu sistema operativo preferido:Windows, macOS o Linux.
Aunque no está oficialmente soportado, la comunidad también ha proporcionado paquetes para Arch y Kali Linux.
Nota:
Debian 10 y CentOS 8 actualmente no soportan remotos de WinRM. Para detalles sobre cómo configurar el remoto basado en SSH, véase PowerShell Remoting sobre SSH.
Para más información up-tofecha sobre sistemas operativos compatibles y ciclo de vida de soporte, consulte el Ciclo de Vida de Soporte de PowerShell.
Ejecutando PowerShell 7
PowerShell 7 se instala en un directorio separado de Windows PowerShell. Esto te permite ejecutar PowerShell 7 junto a Windows PowerShell 5.1. Para PowerShell 6.x, PowerShell 7 es una actualización en situ que elimina PowerShell 6.x.
- PowerShell 7 está instalado para
%programfiles%\PowerShell\7 - La carpeta
%programfiles%\PowerShell\7se agrega a$env:PATH
El paquete instalador de PowerShell 7 actualiza versiones anteriores de PowerShell 6.x:
- PowerShell 6.x en Windows:
%programfiles%\PowerShell\6es reemplazado por%programfiles%\PowerShell\7 - Linux:
/opt/microsoft/powershell/6es reemplazado por/opt/microsoft/powershell/7 - macOS:
/usr/local/microsoft/powershell/6es reemplazado por/usr/local/microsoft/powershell/7
Nota:
En Windows PowerShell, el ejecutable para iniciar PowerShell se llama powershell.exe. En la versión 6 y superiores, el nombre del ejecutable se cambia para soportar la ejecución lado a lado. El nuevo nombre del ejecutable para lanzar PowerShell 7 es pwsh.exe. Las versiones de vista previa permanecen en su lugar pwsh-preview en lugar de pwsh estar bajo el directorio 7-preview.
Mejorada compatibilidad hacia atrás con Windows PowerShell
PowerShell 7.0 marca un salto hacia .NET Core 3.1, permitiendo una compatibilidad significativamente mayor hacia atrás con los módulos existentes de PowerShell de Windows. Esto incluye muchos módulos en Windows que requieren funcionalidad de interfaz gráfica como Out-GridView y Show-Command, así como muchos módulos de gestión de roles que forman parte de Windows.
Para Windows, se añade un nuevo parámetro de cambio, UseWindowsPowerShell , a Import-Module. Este switch crea un módulo proxy en PowerShell 7 que utiliza un proceso local de PowerShell de Windows para ejecutar implícitamente cualquier cmdlet contenido en ese módulo. Para más información sobre Import-Module.
Para más información sobre qué módulos Microsoft funcionan con PowerShell 7.0, consulte la Tabla de Compatibilidad de Módulos.
Ejecución paralela añadida a ForEach-Object
El ForEach-Object cmdlet, que itera los elementos de una colección, ahora tiene paralelismo incorporado con el nuevo parámetro Paralelo .
Por defecto, los bloques de script paralelos usan el directorio de trabajo actual del llamador que inició las tareas paralelas.
Este ejemplo recupera 50.000 entradas de registro de 5 registros del sistema en una máquina local con Windows:
$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'
$logEntries = $logNames | ForEach-Object -Parallel {
Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5
$logEntries.Count
50000
El parámetro Paralelo especifica el bloque de script que se ejecuta en paralelo para cada nombre de registro de entrada.
El nuevo parámetro ThrottleLimit limita el número de bloques de script que se ejecutan en paralelo en un momento dado. El valor predeterminado es 5.
Usa la $_ variable para representar el objeto de entrada actual en el bloque de script. Utiliza el $using: ámbito para pasar referencias variables al bloque de script en ejecución.
Para más información sobre ForEach-Object.
Operador Ternary
PowerShell 7.0 introduce un operador ternario que se comporta como una afirmación if-else simplificada.
El operador ternario de PowerShell está modelado estrechamente a partir de la sintaxis del operador ternario C#:
<condition> ? <if-true> : <if-false>
La expresión de condición siempre se evalúa y su resultado se convierte a booleano para determinar qué rama se evalúa a continuación:
- La expresión
<if-true>se ejecuta si la expresión<condition>es true - La expresión
<if-false>se ejecuta si la expresión<condition>es false
Por ejemplo:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
En este ejemplo, si el camino existe, entonces se muestra el camino existe . Si el camino no existe, entonces se muestra el camino no encontrado .
Para más información sobre If.
Operadores de cadenas de oleoductos
PowerShell 7 implementa los && operadores y || para encadenar pipelines condicionalmente. Estos operadores se conocen en PowerShell como "operadores de cadena de pipeline", y son similares a las listas AND y OR en shells como bash y zsh, así como a símbolos de procesamiento condicional en el Shell de comandos de Windows (cmd.exe).
El operador && ejecuta la canalización de la derecha, si la canalización izquierda se realizó correctamente. Por el contrario, el operador || ejecuta la canalización de la derecha si se produjo un error en la canalización izquierda.
Nota:
Estos operadores usan las variables $? y $LASTEXITCODE para determinar si se produjo un error en una canalización. Esto le permite usarlos con comandos nativos y no solo con cmdlets o funciones.
Aquí, el primer comando tiene éxito y se ejecuta el segundo:
Write-Output 'First' && Write-Output 'Second'
First
Second
Aquí, falla el primer comando, el segundo no se ejecuta:
Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad
Aquí, el primer comando tiene éxito, el segundo no se ejecuta:
Write-Output 'First' || Write-Output 'Second'
First
Aquí, falla el primer comando, por lo que se ejecuta el segundo:
Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second
Para más información sobre operadores de cadenas de oleoductos.
Operadores nulos de coalescencia, asignación y condicionales
PowerShell 7 incluye operador ??de coalescencia nula , asignación ??=condicional nula , y operadores ?. de acceso a miembros condicionales nulos y ?[].
¿Operador de coalescencia nula ??
El operador ?? nulo de coalescencia devuelve el valor de su operando izquierdo si no es nulo.
De lo contrario, evalúa el operando derecho y devuelve su resultado. El operador ?? no evalúa su operando de la derecha si el operando de la izquierda se evalúa como no NULL.
$x = $null
$x ?? 100
100
En el siguiente ejemplo, el operando derecho no será evaluado:
[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020
¿Operador de asignación condicional nulo ?? =
El operador ??= de asignación condicional nula asigna el valor de su operando derecho a su operando izquierdo solo si el operando izquierdo se evalúa como nulo. El operador ??= no evalúa su operando de la derecha si el operando de la izquierda se evalúa como no NULL.
$x = $null
$x ??= 100
$x
100
En el siguiente ejemplo, el operando derecho no se evalúa:
[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020
¿Operadores de acceso a miembros condicionales nulos?. ¿y? [] (Experimental)
Nota:
Esta es una función experimental llamada PSNullConditionalOperators. Para más información, véase Uso de Características Experimentales.
Un operador condicional nulo permite el acceso por miembros, ?., o acceso a elementos, ?[], a su operando solo si ese operando se evalúa como no nulo; de lo contrario, devuelve nulo.
Nota:
Dado que PowerShell permite que ? formen parte del nombre de la variable, se requiere una especificación formal del nombre de la variable para usar estos operadores. Por eso es necesario usar {} alrededor de los nombres de variables como ${a} o cuando ? forma parte del nombre ${a?}de la variable .
En el siguiente ejemplo, se devuelve el valor de la propiedad de miembro Status :
$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped
El siguiente ejemplo devuelve nulo, sin intentar acceder al nombre de miembro Estado de la empresa:
$service = $Null
${Service}?.status
De manera similar, usando ?[], se devuelve el valor del elemento:
$a = 1..10
${a}?[0]
1
Y cuando el operando es nulo, el elemento no es accedido y se devuelve nulo:
$a = $null
${a}?[0]
Para más información About_Operators.
Nueva vista: ConciseView y cmdlet Get-Error
PowerShell 7.0 mejora la visualización de mensajes de error para mejorar la legibilidad de errores interactivos y de script con una nueva vista predeterminada, ConciseView. Las vistas son seleccionables por el usuario mediante la variable $ErrorViewde preferencia .
Con ConciseView, si un error no proviene de un error de script o analizador, entonces es un mensaje de error de una sola línea:
Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist
Si el error ocurre durante la ejecución del script o es un error de análisis sintáctico, PowerShell devuelve un mensaje de error multilínea que contiene el error, un puntero y un mensaje de error que muestran dónde está el error en esa línea. Si el terminal no soporta secuencias de escape de color ANSI (VT100), entonces los colores no se muestran.
Visualización de errores a partir de un script
La vista predeterminada en PowerShell 7 es ConciseView. La vista predeterminada anterior era NormalView y puedes seleccionarla configurando la variable $ErrorViewde preferencia.
$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView
Nota:
Se añade $Host.PrivateData una nueva propiedad llamada ErrorAccentColor para soportar el cambio del color de acento del mensaje de error.
Un nuevo cmdlet Get-Error proporciona una visión completa y detallada del error totalmente cualificado cuando se desea. Por defecto, el cmdlet muestra todos los detalles, incluidas las excepciones internas, del último error que ocurrió.
El Get-Error cmdlet admite entrada desde la tubería usando la variable $Errorincorporada .
Get-Error muestra todos los errores de canalización.
$Error | Get-Error
El Get-Error cmdlet soporta el parámetro Newest , permitiéndote especificar cuántos errores de la sesión actual deseas que se muestren.
Get-Error -Newest 3 # Displays the lst three errors that occurred in the session
Para más información sobre Get-Error.
Notificación de nueva versión
PowerShell 7 utiliza notificaciones de actualización para alertar a los usuarios de la existencia de actualizaciones de PowerShell. Una vez al día, PowerShell consulta un servicio en línea para determinar si hay disponible una versión más reciente.
Nota:
La comprobación de actualización ocurre durante la primera sesión de un periodo determinado de 24 horas. Por razones de rendimiento, la comprobación de actualización comienza 3 segundos después de que comience la sesión. La notificación solo se muestra al inicio de las sesiones posteriores.
Por defecto, PowerShell se suscribe a uno de dos canales de notificaciones diferentes dependiendo de su versión o rama. Las versiones soportadas y disponibles en general (GA) de PowerShell solo devuelven notificaciones para las actualizaciones de lanzamientos de GA. Las versiones de Preview and Release Candidate (RC) notifican actualizaciones en las versiones de previsualización, RC y GA.
El comportamiento de la notificación de actualización se puede cambiar mediante la variable de entorno $Env:POWERSHELL_UPDATECHECK. Se admiten los siguientes valores:
-
Default es lo mismo que no definir
$Env:POWERSHELL_UPDATECHECK- Las versiones de disponibilidad general notifican las actualizaciones de dichas versiones
- Las versiones preliminares o RC notifican las actualizaciones a las versiones de disponibilidad general y versión preliminar
- Apagado desactiva la función de notificación de actualización
- LTS solo notifica actualizaciones a las versiones de GA de mantenimiento a largo plazo (LTS)
Nota:
La variable $Env:POWERSHELL_UPDATECHECK de entorno no existe hasta que se activa por primera vez.
Para configurar la notificación de versión solo para LTS lanzamientos:
$Env:POWERSHELL_UPDATECHECK = 'LTS'
Para configurar la notificación de versión al Default comportamiento:
$Env:POWERSHELL_UPDATECHECK = 'Default'
Para más información Sobre notificaciones de actualizaciones.
Nuevo soporte de recursos DSC con Invoke-DSCResource (Experimental)
Nota:
Esta es una característica experimental llamada PSDesiredStateConfiguration.InvokeDscResource. Para más información, véase Uso de Características Experimentales.
El Invoke-DscResource cmdlet ejecuta un método de un recurso de configuración de estado deseado (DSC) especificado de PowerShell.
Este cmdlet invoca directamente un recurso DSC, sin crear un documento de configuración. Con este cmdlet, los productos de gestión de configuración pueden gestionar Windows o Linux utilizando recursos DSC. Este cmdlet también permite la depuración de recursos cuando el motor DSC está en funcionamiento con la depuración activada.
Este comando invoca el método Set de un recurso llamado WindowsProcess y proporciona las propiedades obligatorias de Path y Arguments para iniciar el proceso especificado de Windows.
Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
Arguments = ''
}
Para más información sobre Invoke-DSCResource.
Cambios y mejoras de ruptura
Cambios disruptivos
- Hacer que las notificaciones de actualización soporten LTS y canales predeterminados (#11132)
- La actualización Test-Connection para que funcione más parecido al de Windows PowerShell (#10697) (Gracias @vexx32!)
- ¿Conservar dinero? para ParenExpression, SubExpression y ArrayExpression (#11040)
- Establecer el directorio de trabajo a directorio actual en Start-Job (#10920) (Gracias @iSazonov!)
- Haz que $PSCulture reflejes consistentemente los cambios culturales durante la sesión (#10138) (Gracias @iSazonov!)
Actualizaciones y correcciones del motor
- Mejoras en las APIs de puntos de interrupción para escenarios remotos (#11312)
- Corregir la definición de clase PowerShell filtrándose a otro espacio de ejecución (#11273)
- Corregir una regresión en el formato causada por la primitiva FirstOrDefault añadida en 7.0.0-Preview1 (#11258)
- Módulos adicionales de Microsoft para rastrear en la telemetría de PS7 (#10751)
- Haz que las características aprobadas sean no experimentales (#11303)
- Actualizar ConciseView para usar TargetObject si procede (#11075)
- Fix NullReferenceException en los métodos públicos CompletionCompleters (#11274)
- Comprobación del estado del hilo de arreglar apartamentos en plataformas que no son Windows (#11301)
- Actualizar la configuración de PSModulePath para concatenar las variables de proceso y entorno de máquina (#11276)
- Ampliar .NET Core a la 3.1.0 (#11260)
- Corregir la detección de $PSHOME delante de $env:PATH (#11141)
- Permitir que pwsh herede $env:PSModulePath y permitir que powershell.exe empiece correctamente (#11057)
- Traslado a .NET Core 3.1 preview 1 (#10798)
- Comprobaciones de etiquetas de reparación refactorizada en el proveedor del sistema de archivos (#10431) (Gracias @iSazonov!)
- Sustituye CR y nueva línea por un carácter 0x23CE en el registro de scripts (#10616)
- Soluciona una fuga de recursos desregistrando el gestor de eventos de AppDomain.CurrentDomain.ProcessExit (#10626)
- Añadir soporte a ActionPreference.Break para entrar en depurador cuando se generen mensajes de Depuración, Error, Información, Progreso, Verbose o Advertencia (#8205) (Gracias @KirkMunro!)
- Activa los complementos del panel de control de inicio dentro de PowerShell sin especificar .CPL extensión. (#9828)
- Números negativos de soporte en -split operador (#8960) (Gracias @ece-jacob-scott!)
Actualizaciones y correcciones generales de Cmdlet
- Solución para un problema en Raspbian para establecer la fecha de cambios en el archivo en la función experimental UnixStat (#11313)
- Añadir -AsPlainText a ConvertFrom-SecureString (#11142)
- Se añadió la comprobación de versión de WindowsPS para WinCompat (#11148)
- Corregir el reporte de errores en algunos escenarios de WinCompat (#11259)
- Añadir un resolvedor binario nativo (#11032) (Gracias @iSazonov!)
- Actualizar el cálculo del ancho de caracteres para respetar correctamente los caracteres CJK (#11262)
- Añadir Unblock-File para macOS (#11137)
- Corregir regresión en Get-PSCallStack (#11210) (Gracias @iSazonov!)
- Eliminar la carga automática del módulo ScheduledJob al usar los cmdlets de Job (#11194)
- Añadir OutputType a Get-Error cmdlet y conservar los nombres originales de los tipos (#10856)
- Corregir la referencia nula en la propiedad SupportsVirtualTerminal (#11105)
- Añadir comprobación de límite en Get-WinEvent (#10648) (Gracias @iSazonov!)
- Arreglar el tiempo de ejecución de comandos para que StopUpstreamCommandsException no se llene en -ErrorVariable (#10840)
- Configura la codificación de salida en [Consola]::OutputEncoding para comandos nativos (#10824)
- Soporte para bloques de código multilínea en ejemplos (#10776) (Gracias @Greg-Smulko!)
- Añadir el parámetro de Cultura a Select-String cmdlet (#10943) (Gracias @iSazonov!)
- Corregir Start-Job ruta de directorio funcional con barra adicional (#11041)
- ConvertFrom-Json: Desenrollar colecciones por defecto (#10861) (Gracias @danstur!)
- Usa Hashtable con sensibilidad a mayúsculas minúsculas para Group-Object cmdlet con switches -CaseSensitive y -AsHashtable (#11030) (Gracias @vexx32!)
- Manejar la excepción si la enumeración de archivos falla al reconstruir la ruta para tener la carcasa correcta (#11014)
- Arreglar ConciseView para mostrar Actividad en lugar de myCommand (#11007)
- Permitir que los comandos web ignoren los estados de error HTTP (#10466) (Gracias @vdamewood!)
- Arreglar la tubería de más de un CommandInfo a Get-Command (#10929)
- Añadir Get-Counter cmdlet para Windows (#10933)
- Haz que ConvertTo-Json trate a [AutomationNull]::Value y [NullString]::Value como $null (#10957)
- Eliminar corchetes de la dirección IPv6 para el remoto SSH (#10968)
- Arreglar el fallo si el comando enviado a pwsh es solo espacio en blanco (#10977)
- Se añadieron Get-Clipboard y Set-Clipboard multiplataforma (#10340)
- Corregir la configuración de la ruta original del objeto del sistema de archivos para que no tenga barra adicional (#10959)
- $null de soporte para ConvertTo-Json (#10947)
- Añadir Out-Printer comando en Windows (#10906)
- Arreglar Start-Job -WorkingDirectory con espacios en blanco (#10951)
- Devolver el valor por defecto al obtener null para una configuración en PSConfiguration.cs (#10963) (Gracias @iSazonov!)
- Manejar la excepción de IO como no terminante (#10950)
- Añadir ensamblador GraphicalHost para habilitar Out-GridView, Show-Command y Get-Help -ShowWindow (#10899)
- Toma ComputerName vía pipeline en Get-HotFix (#10852) (Gracias @kvprasoon!)
- Corregir la completación de tabulación para los parámetros para que muestre los parámetros comunes como disponibles (#10850)
- Corrige GetCorrectCasedPath() para comprobar primero si se devuelve alguna entrada de archivo del sistema antes de llamar a First() (#10930)
- Establecer el directorio de trabajo a directorio actual en Start-Job (#10920) (Gracias @iSazonov!)
- Cambiar TabExpansion2 para que no requiera -CursorColumn y tratarlo como $InputScript.Length (#10849)
- Manejar el caso donde el anfitrión no puede devolver Filas o Columnas de pantalla (#10938)
- Corregir el uso de colores de acento para hosts que no los soportan (#10937)
- Añadir de nuevo Update-List comando (#10922)
- Actualizar FWLink ID para Clear-RecycleBin (#10925)
- Durante la finalización de la tabulación, saltar archivo si no puede leer atributos de archivo (#10910)
- Añadir Clear-RecycleBin para Windows (#10909)
- Añadir
$env:__SuppressAnsiEscapeSequencespara controlar si se debe tener una secuencia de escape VT en la salida (#10814) - Añadir -NoEmphasize parámetro para colorear Select-String salida (#8963) (Gracias @derek-xia!)
- Añadir Get-HotFix cmdlet (#10740)
- Haz que Add-Type utilizables en aplicaciones que alojan PowerShell (#10587)
- Usa un orden de evaluación más efectivo en LanguagePrimitives.IsNullLike() (#10781) (Gracias @vexx32!)
- Mejorar la gestión de entradas por tubería de colección mixta y de los flujos de entrada en Format-Hex (#8674) (Gracias @vexx32!)
- Usa la conversión de tipos en las tablas hash de SSHConnection cuando el valor no coincide con el tipo esperado (#10720) (Gracias @SeeminglyScience!)
- Arreglar Get-Content -ReadCount 0 comportamiento cuando -TotalCount está configurado (#10749) (Gracias @eugenesmlv!)
- Mensaje de error de reescritura de acceso denegado en Get-WinEvent (#10639) (Gracias @iSazonov!)
- Activar la completación de tabulaciones para la asignación de variables que estén en enum o tipo restringido (#10646)
- Eliminar la propiedad remota SourceLength no utilizada que causa problemas de formato (#10765)
- Añadir -Delimiter parámetro a ConvertFrom-StringData (#10665) (Gracias @steviecoaster!)
- Añadir parámetro posicional para ScriptBlock al usar Invoke-Command con SSH (#10721) (Gracias @machgo!)
- Mostrar información de contexto de línea si hay varias líneas, pero sin nombre de script para ConciseView (#10746)
- Añadir soporte para rutas \wsl$\ al proveedor del sistema de archivos (#10674)
- Añadir el texto del token que falta para TokenKind.QuestionMark en el analizador sintáctico (#10706)
- Establece el directorio de trabajo actual de cada ForEach-Object -Parallel script en ejecución en la misma ubicación que el script que llama. (#10672)
- Sustituye api-ms-win-core-file-l1-2-2.dll por Kernell32.dll para las APIs FindFirstStreamW y FindNextStreamW (#10680) (Gracias @iSazonov!)
- Ayuda para ajustar el script de formato para que sea más tolerante a StrictMode (#10563)
- Añadir -SecurityDescriptorSDDL parámetro a New-Service (#10483) (Gracias @kvprasoon!)
- Eliminar la salida informativa, consolidar el uso de ping en Test-Connection (#10478) (Gracias @vexx32!)
- Lee puntos especiales de reparso sin acceder a ellos (#10662) (Gracias @iSazonov!)
- Salida Clear-Host directa al terminal (#10681) (Gracias @iSazonov!)
- Añadir de nuevo la nueva línea para agrupar con Format-Table y -Property (#10653)
- Eliminar [ValidateNotNullOrEmpty] de -InputObject en Get-Random para permitir cadena vacía (#10644)
- Haz que el algoritmo de distancia de cadenas del sistema de sugerencias sea insensible a mayúsculas y minúsculas (#10549) (Gracias @iSazonov!)
- Corregir la excepción de referencia nula en el procesamiento de entrada ForEach-Object -Parallel (#10577)
- Añadir definiciones de políticas de grupo PowerShell (#10468)
- Actualizar el host de consola para soportar secuencias de control XTPUSHSGR/XTPOPSGR VT que se usan en escenarios de componibilidad. (#10208)
- Añadir el parámetro WorkingDirectory a Start-Job (#10324) (Gracias @davinci26!)
- Elimina el gestor de eventos que causaba cambios en puntos de interrupción para que se replicara erróneamente al depurador de espacio de ejecución del host (#10503) (Gracias @KirkMunro!)
- Sustituye api-ms-win-core-job-12-1-0.dll por Kernell32.dll en Microsoft.PowerShell.Commands.NativeMethods P/Invoke API(#10417) (Gracias @iSazonov!)
- Corregir la salida incorrecta para New-Service en asignación de variables y -OutVariable (#10444) (Gracias @kvprasoon!)
- Solucionar problemas globales con herramientas relacionadas con el código de salida, parámetros de línea de comandos y ruta con espacios (#10461)
- Corregir la recursión en OneDrive - cambiar FindFirstFileEx() para que use el tipo SafeFindHandle (#10405)
- Evita la carga automática de PSReadLine en Windows si el lector de pantalla NVDA está activo (#10385)
- Aumentar las versiones de módulos construidos con PowerShell a la 7.0.0.0 (#10356)
- Añadir un error de lanzamiento en Add-Type si ya existe un tipo con el mismo nombre (#9609) (Gracias @iSazonov!)
Performance
- Evita usar closure en Parser.SaveError (#11006)
- Mejorar la caché al crear nuevas instancias Regex (#10657) (Gracias @iSazonov!)
- Mejorar el procesamiento de los datos de tipos integrados en PowerShell de types.ps1xml, typesV3.ps1xml y GetEvent.types.ps1xml (#10898)
- Actualizar PSConfiguration.ReadValueFromFile para hacerlo más rápido y eficiente en memoria (#10839)
- Añadir pequeñas mejoras de rendimiento para la inicialización en espacio de ejecución (#10569) (Gracias @iSazonov!)
- Haz que ForEach-Object más rápido para sus escenarios más comunes (#10454) y solucione ForEach-Object -Parallel problema de rendimiento con muchos espacios de ejecución (#10455)
Limpieza de código
- Cambiar el texto de los comentarios y elementos para cumplir con los estándares de Microsoft (#11304)
- Problemas de estilo de limpieza en Compiler.cs (#10368) (Gracias @iSazonov!)
- Elimina el convertidor de tipos no utilizado para CommaDelimitedStringCollection (#11000) (Gracias @iSazonov!)
- Estilo de limpieza en InitialSessionState.cs (#10865) (Gracias @iSazonov!)
- Limpieza de código para la clase PSSession (#11001)
- Elimina la función de 'ejecutar Update-Help que no funciona de Get-Help cuando Get-Help ejecuta por primera vez' (#10974)
- Problemas de estilo de corrección (#10998) (Gracias @iSazonov!)
- Limpieza: usa el alias de tipo incorporado (#10882) (Gracias @iSazonov!)
- Elimina la clave de ajuste no utilizada ConsolePrompting y evita la creación innecesaria de cadenas al consultar la configuración ExecutionPolicy (#10985)
- Desactivar la comprobación de notificación de actualización para las compilaciones diarias (#10903) (Gracias @bergmeister!)
- Restablecer la API de depuración perdida en #10338 (#10808)
- Eliminar la referencia WorkflowJobSourceAdapter que ya no se usa (#10326) (Gracias @KirkMunro!)
- Cleanup COM se interpone en código de lista de salto corrigiendo atributos PreserveSig (#9899) (Gracias @weltkante!)
- Añade un comentario explicando por qué -ia no es el alias de -InformationAction parámetro común (#10703) (Gracias @KirkMunro!)
- Renombrar InvokeCommandCmdlet.cs a InvokeExpressionCommand.cs (#10659) (Gracias @kilasuit!)
- Añadir pequeñas limpiezas de código relacionadas con notificaciones de actualización (#10698)
- Elimina la lógica de flujo de trabajo obsoleta de los scripts de configuración remota (#10320) (Gracias @KirkMunro!)
- Actualizar el formato de ayuda para usar el caso adecuado (#10678) (Gracias @tnieto88!)
- Limpiar problemas al estilo CodeFactor que llegan en commits durante el último mes (#10591) (Gracias @iSazonov!)
- Corregir un error tipográfico en la descripción de la característica experimental PSTernaryOperator (#10586) (Gracias @bergmeister!)
- Convierte ActionPreference.Suspende el valor de enumeración en un estado reservado no soportado y elimina la restricción para usar ActionPreference.Ignore en las variables de preferencia (#10317) (Gracias @KirkMunro!)
- Sustituye ArrayList por List<T> para obtener código más legible y fiable sin cambiar funcionalidades (#10333) (Gracias @iSazonov!)
- Haz correcciones de estilo de código en TestConnectionCommand (#10439) (Gracias @vexx32!)
- Limpiar AutomationEngine y eliminar la llamada extra al método SetSessionStateDrive (#10416) (Gracias @iSazonov!)
- Renombrar ParameterSetName por defecto de nuevo a Delimiter para ConvertTo-Csv y ConvertFrom-Csv (#10425)
Tools
- Añadir la configuración predeterminada para la propiedad SDKToUse para que se construya en VS (#11085)
- Install-Powershell.ps1: Añadir un parámetro para usar la instalación de MSI (#10921) (Gracias @MJECloud!)
- Añade ejemplos básicos para install-powershell.ps1 (#10914) (Gracias @kilasuit!)
- Haz que Install-PowerShellRemoting.ps1 gestione la cadena vacía en el parámetro PowerShellHome (#10526) (Gracias @Orca88!)
- Cambiar de /etc/lsb-release a /etc/os-release en install-powershell.sh (#10773) (Gracias @Himura2la!)
- Comprueba pwsh.exe y pwsh en la versión diaria de Windows (#10738) (Gracias @centreboard!)
- Quitar el grifo innecesario en installpsh-osx.sh (#10752)
- Actualizar install-powershell.ps1 para comprobar si la versión diaria ya está instalada (#10489)
Pruebas
- Haz que la prueba DSC poco fiable esté pendiente (#11131)
- Prueba de corrección de stringdata para validar correctamente las claves de las tablas hash (#10810)
- Descarga módulos de prueba (#11061) (Gracias @iSazonov!)
- Aumentar el tiempo entre intentos de la URL de prueba (#11015)
- Actualizar las pruebas para describir con precisión las acciones de prueba. (#10928) (Gracias @romero126!)
- Saltar temporalmente la prueba inestable TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
- Haz que la prueba de fugas del gestor de eventos sea estable (#10790)
- Sincronización en mayúsculas en CI YAML (#10767) (Gracias @RDIL!)
- Prueba añadida para la corrección de fugas del gestor de eventos (#10768)
- Añadir Get-ChildItem test (#10507) (Gracias @iSazonov!)
- Sustituye el lenguaje ambiguo de las pruebas de cambiar a parámetro para mayor precisión (#10666) (Gracias @romero126!)
- Añadir comprobación experimental a ForEach-Object -Parallel pruebas (#10354) (Gracias @KirkMunro!)
- Pruebas de actualización para la validación alpina (#10428)
Mejoras en la construcción y el empaque
- Corregir la firma de paquetes Nuget para la compilación coordinada de paquetes (#11316)
- Actualizar dependencias desde PowerShell Gallery y NuGet (#11323)
- Adelanta Microsoft.ApplicationInsights de la 2.11.0 a la 2.12.0 (#11305)
- Cambiar Microsoft.CodeAnalysis.CSharp de la versión 3.3.1 a la 3.4.0 (#11265)
- Paquetes de actualizaciones para Debian 10 y 11 (#11236)
- Solo habilitar características experimentales antes de RC (#11162)
- Actualizar versión mínima de macOS (#11163)
- Ampliar NJsonSchema de 10.0.27 a 10.0.28 (#11170)
- Actualización de enlaces en README.md y metadata.json para Preview.5 (#10854)
- Selecciona los archivos para pruebas de cumplimiento que pertenecen a PowerShell (#10837)
- Permite que el paquete msix de win7x86 se construya. (Interno 10515)
- Permitir que las versiones semánticas se pasen a la función NormalizeVersion (#11087)
- Ampliar .NET core framework a 3.1-preview.3 (#11079)
- Ampliar PSReadLine de la versión 2.0.0-beta5 a la 2.0.0-beta6 en /src/Modules (#11078)
- Cambiar Newtonsoft.Json de 12.0.2 a 12.0.3 (#11037) (#11038)
- Añadir paquetes Debian 10, 11 y CentOS 8 (#11028)
- Sube Build-Info archivo Json con el campo ReleaseDate (#10986)
- Ampliar el framework central de .NET a 3.1-preview.2 (#10993)
- Habilitar la compilación del paquete x86 MSIX (#10934)
- Actualizar la URL del script de instalación del SDK dotnet en build.psm1 (#10927)
- Bump Markdig. Firmado de 0.17.1 a 0.18.0 (#10887)
- Cambiar ThreadJob de la 2.0.1 a la 2.0.2 (#10886)
- Actualizar el módulo de manifiestos y empaquetado de AppX para cumplir con los requisitos de la MS Store (#10878)
- Actualizar la referencia del paquete para PowerShell SDK a preview.5 (Interno 10295)
- Actualización ThirdPartyNotices.txt (#10834)
- Sustituye Microsoft.PowerShell.Native a 7.0.0-preview.3 (#10826)
- Avanzar Microsoft.ApplicationInsights de la versión 2.10.0 a la 2.11.0 (#10608)
- Cambiar NJsonSchema de 10.0.24 a 10.0.27 (#10756)
- Añadir soporte para MacPorts al sistema de compilación (#10736) (Gracias @Lucius-Q-User!)
- Ampliar la Gestión de Paquetes de la versión 1.4.4 a la 1.4.5 (#10728)
- Cambiar NJsonSchema de 10.0.23 a 10.0.24 (#10635)
- Añadir variable de entorno para diferenciar la telemetría cliente/servidor en MSI (#10612)
- Cambiar PSDesiredStateConfiguration de la versión 2.0.3 a la 2.0.4 (#10603)
- Avanzar Microsoft.CodeAnalysis.CSharp de 3.2.1 a 3.3.1 (#10607)
- Actualización a .Net Core 3.0 RTM (#10604) (Gracias @bergmeister!)
- Actualizar el empaquetado de MSIX para que la versión cumpla con los requisitos de la Windows Store (#10588)
- Salta PowerShellGet de la versión 2.2 a la 2.2.1 (#10382)
- Cambiar la versión de PackageManagement de la 1.4.3 a la 1.4.4 (#10383)
- Actualización README.md y metadata.json para 7.0.0-preview.4 (Interno 10011)
- Actualizar la versión 3.0 de .Net Core de Preview 9 a RC1 (#10552) (Gracias @bergmeister!)
- Generación de lista de Funcionalidades Experimentales Fix (Internal 9996)
- Ampliar la versión PSReadLine de la 2.0.0-beta4 a la 2.0.0-beta5 (#10536)
- Arreglar el script de compilación de release para establecer la etiqueta release
- Versión actualizada de Microsoft.PowerShell.Native para 7.0.0-preview.2 (#10519)
- Actualizar a Netcoreapp3.0 preview9 (#10484) (Gracias @bergmeister!)
- Asegúrate de que la build coordinada diaria sepa que es una build diaria (#10464)
- Actualizar la compilación combinada del paquete para lanzar las compilaciones diarias (#10449)
- Eliminar referencia de appveyor (#10445) (Gracias @RDIL!)
- Cambiar la versión de NJsonSchema de la 10.0.22 a la 10.0.23 (#10421)
- Elimina la eliminación de la carpeta de compilación linux-x64 porque algunas dependencias de Alpine la necesitan (#10407)
Documentación y contenido de ayuda
- Refactorizar los registros de cambio en un registro por lanzamiento (#11165)
- Corregir FWLinks para documentos de ayuda online de PowerShell 7 (#11071)
- Actualización CONTRIBUTING.md (#11096) (Gracias @mklement0!)
- Corrección de los enlaces de la documentación de instalación en README.md (#11083)
- Añade ejemplos a install-powershell.ps1 script (#11024) (Gracias @kilasuit!)
- Corrección a Select-String énfasis y Import-DscResource en CHANGELOG.md (#10890)
- Elimina el enlace obsoleto de powershell-beginners-guide.md (#10926)
- Registros de cambios estables y de mantenimiento por fusión (#10527)
- Actualización versión usada de .NET en la compilación (#10775) (Gracias @Greg-Smulko!)
- Reemplazar enlaces de MSDN a Microsoft Learn en powershell-beginners-guide.md (#10778) (Gracias @iSazonov!)
- Enlace de resumen de Arreglar DSC roto (#10702)
- Actualizar Support_Question.md para enlazar a Stack Overflow como otro recurso comunitario (#10638) (Gracias @mklement0!)
- Añadir arquitectura de procesador a la plantilla de solicitudes de distribución (#10661)
- Añadir nuevo libro de MoL de PowerShell a la documentación de aprendizaje de PowerShell (#10602)
- Actualización README.md y metadatos para las versiones v6.1.6 y v6.2.3 (#10523)
- Corregir un error tipográfico en README.md (#10465) (Gracias @vedhasp!)
- Añadir una referencia al módulo PSKoans en la documentación de Recursos de Aprendizaje (#10369) (Gracias @vexx32!)
- Actualización README.md y metadata.json para 7.0.0-preview.3 (#10393)