Compartilhar via


O que há de novo no PowerShell 7.0

PowerShell 7.0 é uma edição open-source e multiplataforma (Windows, macOS e Linux) do PowerShell, projetada para gerenciar ambientes heterogêneos e nuvem híbrida.

Neste lançamento, estamos apresentando uma série de novos recursos, incluindo:

  • Paralelização de pipeline com ForEach-Object -Parallel
  • Novos operadores:
    • Operador ternário: a ? b : c
    • Operadores da cadeia de dutos: || e &&
    • Operadores condicionais nulos: ?? e ??=
  • Uma visão de erro simplificada e dinâmica e Get-Error um cmdlet para facilitar a investigação de erros
  • Uma camada de compatibilidade que permite aos usuários importar módulos em uma sessão implícita do PowerShell do Windows
  • Notificações automáticas de nova versão
  • A capacidade de invocar recursos DSC diretamente do PowerShell 7 (experimental)

Para ver a lista completa de recursos e correções, veja os registros de alterações.

Onde posso instalar o PowerShell?

O PowerShell 7 atualmente suporta os seguintes sistemas operacionais em x64, incluindo:

  • Windows 8.1 e 10
  • Windows Server 2012, 2012 R2, 2016 e 2019
  • macOS 10.13+
  • Red Hat Enterprise Linux (RHEL) / CentOS 7
  • Fedora 30+
  • Debian 9
  • Ubuntu LTS 16.04+
  • Alpine Linux 3.8+

Além disso, o PowerShell 7.0 suporta versões ARM32 e ARM64 de Debian, Ubuntu e ARM64 Alpine Linux.

Confira as instruções de instalação do seu sistema operacional preferido:Windows, macOS ou Linux.

Embora não seja oficialmente suportado, a comunidade também forneceu pacotes para Arch e Kali Linux.

Observação

O Debian 10 e o CentOS 8 atualmente não suportam remotis do WinRM. Para detalhes sobre como configurar remotos baseados em SSH, veja PowerShell Remoting over SSH.

Para mais informações up-todata sobre sistemas operacionais suportados e ciclo de vida de suporte, veja o Ciclo de Vida de Suporte PowerShell.

Rodando PowerShell 7

O PowerShell 7 se instala em um diretório separado do Windows PowerShell. Isso permite que você execute o PowerShell 7 lado a lado com o Windows PowerShell 5.1. Para o PowerShell 6.x, o PowerShell 7 é uma atualização no local que remove o PowerShell 6.x.

  • O PowerShell 7 é instalado para %programfiles%\PowerShell\7
  • A pasta %programfiles%\PowerShell\7 é adicionada ao $env:PATH

O pacote de instaladores do PowerShell 7 atualiza versões anteriores do PowerShell 6.x:

  • PowerShell 6.x no Windows: %programfiles%\PowerShell\6 é substituído por %programfiles%\PowerShell\7
  • Linux: /opt/microsoft/powershell/6 é substituído por /opt/microsoft/powershell/7
  • macOS: /usr/local/microsoft/powershell/6 é substituído por /usr/local/microsoft/powershell/7

Observação

No Windows PowerShell, o executável para iniciar o PowerShell é chamado powershell.exe. Na versão 6 e superiores, o nome do executável é alterado para suportar execução lado a lado. O novo nome do executável para lançar o PowerShell 7 é pwsh.exe. As versões de pré-visualização permanecem no local, pwsh-preview em vez de pwsh estar no diretório 7-preview.

Compatibilidade retroativa aprimorada com o Windows PowerShell

O PowerShell 7.0 marca uma transição para o .NET Core 3.1, permitindo uma compatibilidade retroativa significativamente maior com os módulos existentes do PowerShell do Windows. Isso inclui muitos módulos no Windows que exigem funcionalidade de interface gráfica como Out-GridView e Show-Command, assim como muitos módulos de gerenciamento de funções que são incluídos no Windows.

Para Windows, um novo parâmetro de switch, UseWindowsPowerShell , é adicionado a Import-Module. Esse switch cria um módulo proxy no PowerShell 7 que usa um processo local do PowerShell do Windows para executar implicitamente quaisquer cmdlets contidos nesse módulo. Para mais informações sobre o Import-Module.

Para mais informações sobre quais módulos Microsoft funcionam com o PowerShell 7.0, veja a Tabela de Compatibilidade de Módulos.

Execução paralela adicionada ao ForEach-Object

O ForEach-Object cmdlet, que itera itens em uma coleção, agora possui paralelismo embutido com o novo parâmetro Paralelo .

Por padrão, blocos de script paralelos usam o diretório de trabalho atual do chamador que iniciou as tarefas paralelas.

Este exemplo recupera 50.000 entradas de log de 5 logs do sistema em uma máquina Windows local:

$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

O parâmetro Parallel especifica o bloco de script que é executado em paralelo para cada nome de log de entrada.

O novo parâmetro ThrottleLimit limita o número de blocos de script rodando em paralelo em um dado momento. O padrão é 5.

Use a $_ variável para representar o objeto de entrada atual no bloco de script. Use o $using: escopo para passar referências de variáveis para o bloco de script em execução.

Para mais informações sobre ForEach-Object.

Operador ternário

O PowerShell 7.0 introduz um operador ternário que se comporta como uma instrução simplificada if-else . O operador ternário do PowerShell é modelado de perto a partir da sintaxe do operador ternário C#:

<condition> ? <if-true> : <if-false>

A expressão condicional é sempre avaliada e seu resultado convertido em um booleano para determinar qual ramo será avaliado a seguir:

  • A expressão <if-true> será executada se a expressão <condition> for verdadeira
  • A expressão <if-false> será executada se a expressão <condition> for false

Por exemplo:

$message = (Test-Path $path) ? "Path exists" : "Path not found"

Neste exemplo, se o caminho existe, então Path existe é exibido. Se o caminho não existir, então o caminho não encontrado é exibido.

Para mais informações sobre o caso

Operadores de cadeia de pipeline

O PowerShell 7 implementa os && operadores and || para encadear pipelines condicionalmente. Esses operadores são conhecidos no PowerShell como "operadores de cadeia de pipeline" e são semelhantes às listas AND e OR em shells como bash e zsh, assim como a símbolos de processamento condicional no Windows Command Shell (cmd.exe).

O operador && executa o pipeline à direita, se o pipeline à esquerda tiver sido bem-sucedido. Por outro lado, o operador || executará o pipeline à direita se o pipeline esquerdo falhar.

Observação

Esses operadores usam as variáveis $? e $LASTEXITCODE para determinar se um pipeline falhou. Isso permite que você os use com comandos nativos e não apenas com cmdlets ou funções.

Aqui, o primeiro comando é bem-sucedido e o segundo comando é executado:

Write-Output 'First' && Write-Output 'Second'
First
Second

Aqui, o primeiro comando falha, o segundo não é executado:

Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad

Aqui, o primeiro comando tem sucesso, o segundo comando não é executado:

Write-Output 'First' || Write-Output 'Second'
First

Aqui, o primeiro comando falha, então o segundo comando é executado:

Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second

Para mais informações sobre Operadores de Cadeia de Pipeline.

Operadores de coalescimento nulo, atribuição e condicionais

O PowerShell 7 inclui operadores ??de coalescência nula, atribuição ??=condicional nula, e operadores ?. de acesso a membros condicionais nulos e ?[].

Operador de coalescência nula ??

O operador ?? de coalescência nula retorna o valor de seu operando à esquerda se ele não for nulo. Caso contrário, ele avalia o operando à direita e retorna seu resultado. O operador ?? não avaliará o operando do lado direito se o operando esquerdo for avaliado como não nulo.

$x = $null
$x ?? 100
100

No exemplo a seguir, o operando direito não será avaliado:

[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020

Operador de atribuição condicional nulo ?? =

O operador ??= de atribuição condicional nula atribui o valor de seu operando direito ao seu operando esquerdo somente se o operando da esquerda for avaliado como nulo. O operador ??= não avaliará o operando do lado direito se o operando esquerdo for avaliado como não nulo.

$x = $null
$x ??= 100
$x
100

No exemplo a seguir, o operando direito não é avaliado:

[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020

Operadores de acesso condicional para membros nulos ?. e? [] (Experimental)

Observação

Esta é uma funcionalidade experimental chamada PSNullConditionalOperators. Para mais informações, veja Uso de Recursos Experimentais.

Um operador condicional nulo permite acesso por membro, ?., ou acesso a elemento, ?[], ao seu operando somente se esse operando for avaliado como não-nulo; caso contrário, retorna nulo.

Observação

Como o PowerShell permite que ? faça parte do nome da variável, a especificação formal do nome da variável é necessária para usar esses operadores. Portanto, é necessário usar {} ao redor dos nomes das variáveis como ${a} ou quando ? faz parte do nome ${a?}da variável .

No exemplo a seguir, o valor da propriedade membro Status é retornado:

$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped

O exemplo a seguir retorna nulo, sem tentar acessar o nome do membro Status:

$service = $Null
${Service}?.status

De forma semelhante, usando ?[], o valor do elemento é retornado:

$a = 1..10
${a}?[0]
1

E quando o operando é nulo, o elemento não é acessado e o nulo é devolvido:

$a = $null
${a}?[0]

Para mais informações About_Operators.

Nova visualização ConciseView e cmdlet Get-Error

O PowerShell 7.0 aprimora a exibição de mensagens de erro para melhorar a legibilidade de erros interativos e de script com uma nova visualização padrão, a ConciseView. As visualizações são selecionáveis pelo usuário através da variável $ErrorViewde preferência .

Com o ConciseView, se um erro não for de script ou parser, então é uma mensagem de erro de uma linha:

Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist

Se o erro ocorrer durante a execução do script ou for um erro de análise sintática, o PowerShell retorna uma mensagem de erro multilinha que contém o erro, um ponteiro e uma mensagem de erro mostrando onde o erro está naquela linha. Se o terminal não suportar sequências de escape de cor ANSI (VT100), então as cores não são exibidas.

Exibição de erro a partir de um script

A visualização padrão no PowerShell 7 é o ConciseView. A visualização padrão anterior era NormalView e você pode selecionar isso definindo a variável $ErrorViewpreferencial.

$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView

Observação

Uma nova propriedade ErrorAccentColor é adicionada $Host.PrivateData para suportar a alteração da cor de destaque da mensagem de erro.

Um novo cmdlet Get-Error fornece uma visão completa e detalhada do erro totalmente qualificado quando desejado. Por padrão, o cmdlet exibe todos os detalhes, incluindo exceções internas, do último erro que ocorreu.

Exibição a partir do Get-Error

O Get-Error cmdlet suporta entrada do pipeline usando a variável $Errorembutida . Get-Error exibe todos os erros de canal.

$Error | Get-Error

O Get-Error cmdlet suporta o parâmetro Newest , permitindo que você especifique quantos erros da sessão atual deseja que sejam exibidos.

Get-Error -Newest 3 # Displays the lst three errors that occurred in the session

Para mais informações sobre o Get-Error.

Notificação de nova versão

O PowerShell 7 utiliza notificações de atualização para alertar os usuários sobre a existência de atualizações do PowerShell. Uma vez por dia, o PowerShell consulta um serviço online para determinar se uma versão mais recente está disponível.

Observação

A verificação de atualização ocorre durante a primeira sessão de um período determinado de 24 horas. Por razões de desempenho, a verificação de atualização começa 3 segundos após o início da sessão. A notificação é mostrada apenas no início das sessões seguintes.

Por padrão, o PowerShell assina um dos dois canais de notificação diferentes, dependendo de sua versão/ramo. Versões suportadas e geralmente disponíveis (GA) do PowerShell retornam notificações apenas para lançamentos atualizados do GA. As versões Preview and Release Candidate (RC) notificam sobre atualizações em versões de pré-visualização, RC e GA.

O comportamento de notificação de atualização pode ser alterado usando a variável de ambiente $Env:POWERSHELL_UPDATECHECK. Há suporte para os seguintes valores:

  • Padrão é o mesmo que não definir $Env:POWERSHELL_UPDATECHECK
    • As versões GA notificam atualizações de versões GA
    • As versões RC/Versão prévia notificam atualizações de GA e versão prévia
  • Desliga o recurso de notificação de atualização
  • O LTS notifica apenas atualizações para versões de GA de serviço de longo prazo (LTS)

Observação

A variável $Env:POWERSHELL_UPDATECHECK ambiente não existe até ser definida pela primeira vez.

Para definir a notificação de versão apenas para LTS lançamentos:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

Para definir a notificação de versão para o comportamento Default :

$Env:POWERSHELL_UPDATECHECK = 'Default'

Para mais informações Sobre Notificações de Atualização.

Novo suporte de recursos DSC com Invoke-DSCResource (Experimental)

Observação

Esta é uma funcionalidade experimental chamada PSDesiredStateConfiguration.InvokeDscResource. Para mais informações, veja Uso de Recursos Experimentais.

O Invoke-DscResource cmdlet executa um método de um recurso específico de Configuração de Estado Desejado (DSC) do PowerShell.

Esse cmdlet invoca diretamente um recurso DSC, sem criar um documento de configuração. Usando esse cmdlet, produtos de gerenciamento de configuração podem gerenciar Windows ou Linux usando recursos DSC. Esse cmdlet também permite a depuração de recursos quando o motor DSC está rodando com a depuração ativada.

Esse comando invoca o método Set de um recurso chamado WindowsProcess e fornece as propriedades obrigatórias Path e Arguments para iniciar o processo Windows especificado.

Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
  Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
  Arguments = ''
}

Para mais informações sobre o Invoke-DSCResource.

Mudanças e Melhorias Recentes

Alterações de quebra

  • Suporte a notificações de atualização LTS e canais padrão (#11132)
  • Atualizar Test-Connection para funcionar mais parecido com o do Windows PowerShell (#10697) (Obrigado @vexx32!)
  • Preservar o dinheiro? para ParenExpression, SubExpression e ArrayExpression (#11040)
  • Defina o diretório de trabalho para o diretório atual em Start-Job (#10920) (Obrigado @iSazonov!)
  • Faça $PSCulture refletir consistentemente as mudanças culturais durante a sessão (#10138) (Obrigado @iSazonov!)

Atualizações e correções do motor

  • Melhorias em APIs de pontos de interrupção para cenários remotos (#11312)
  • Corrigir definição de classe PowerShell vazando para outro Runspace (#11273)
  • Corrigir uma regressão na formatação causada pela primitiva FirstOrDefault adicionada em 7.0.0-Preview1 (#11258)
  • Módulos Microsoft adicionais para acompanhamento em Telemetria do PS7 (#10751)
  • Torne as funcionalidades aprovadas não experimentais (#11303)
  • Atualize o ConciseView para usar o TargetObject, se aplicável (#11075)
  • Corrigir NullReferenceException nos métodos públicos CompletionCompleters (#11274)
  • Verificação do estado do tópico de consertar apartamento em plataformas que não são Windows (#11301)
  • Atualizar a configuração PSModulePath para concatenar as variáveis do processo e do ambiente da máquina (#11276)
  • Ampliar o .NET Core para a 3.1.0 (#11260)
  • Corrigir a detecção de $PSHOME na frente de $env:PATH (#11141)
  • Permitir que pwsh herde $env:PSModulePath e permitir que powershell.exe comece corretamente (#11057)
  • Migrar para .NET Core 3.1 preview 1 (#10798)
  • Verificações de tags de refatoração de repare no provedor do sistema de arquivos (#10431) (Obrigado @iSazonov!)
  • Substituir CR e nova linha por um caractere 0x23CE no registro de scripts (#10616)
  • Corrija um vazamento de recursos desregistrando o gerenciador de eventos do AppDomain.CurrentDomain.ProcessExit (#10626)
  • Adicione suporte ao ActionPreference.Break para quebrar o depurador quando mensagens de Debug, Erro, Informação, Progresso, Verbose ou Aviso forem geradas (#8205) (Obrigado @KirkMunro!)
  • Ative os complementos iniciais do painel de controle dentro do PowerShell sem especificar .CPL extensão. (#9828)
  • Números negativos de suporte no operador -split (#8960) (Obrigado @ece-jacob-scott!)

Atualizações e Correções Gerais do Cmdlet

  • Correção para problema no Raspbian para definir a data das alterações de arquivo no UnixStat Experimental Feature (#11313)
  • Adicionar -AsPlainText ao ConvertFrom-SecureString (#11142)
  • Adicionada verificação de versão do WindowsPS para WinCompat (#11148)
  • Corrigir o relato de erros em alguns cenários WinCompat (#11259)
  • Adicionar resolver binário nativo (#11032) (Obrigado @iSazonov!)
  • Atualizar o cálculo da largura do carvão para respeitar corretamente os caracteres CJK (#11262)
  • Adicionar Unblock-File para macOS (#11137)
  • Corrigir regressão em Get-PSCallStack (#11210) (Obrigado @iSazonov!)
  • Remova o carregamento automático do módulo ScheduledJob ao usar os comandos Job (#11194)
  • Adicionar o OutputType a Get-Error cmdlet e preservar os nomes de tipo originais (#10856)
  • Corrigir a referência nula na propriedade SupportsVirtualTerminal (#11105)
  • Adicionar verificação de limite em Get-WinEvent (#10648) (Obrigado @iSazonov!)
  • Corrija o runtime de comandos para que o StopUpstreamCommandsException não seja preenchido no -ErrorVariable (#10840)
  • Defina a codificação de saída para [Console]::OutputEncoding para comandos nativos (#10824)
  • Suporte a blocos de código multilinha em exemplos (#10776) (Obrigado @Greg-Smulko!)
  • Adicionar o parâmetro de Cultura ao Select-String cmdlet (#10943) (Obrigado @iSazonov!)
  • Corrigir Start-Job caminho de diretório funcionando com barra adicional (#11041)
  • ConvertFrom-Json: Desembrulhar coleções por padrão (#10861) (Obrigado @danstur!)
  • Use Hashtable sensível a maiúsculas minúsculas para Group-Object cmdlet com switches -CaseSensitive e -AsHashtable (#11030) (Obrigado @vexx32!)
  • Exceção de tratamento se a enumeração de arquivos falhar ao reconstruir o caminho para ter o caso correto (#11014)
  • Corrija o ConciseView para mostrar Atividade em vez de myCommand (#11007)
  • Permitir que os comandos web ignorem status de erro HTTP (#10466) (Obrigado @vdamewood!)
  • Corrigir a tubulação de mais de um CommandInfo para Get-Command (#10929)
  • Adicionar Get-Counter cmdlet para Windows (#10933)
  • Faça ConvertTo-Json tratar [AutomationNull]::Value e [NullString]::Value como $null (#10957)
  • Remover colchetes do endereço IPv6 para remoção SSH (#10968)
  • Corrija o crash se o comando enviado para pwsh for apenas espaço em branco (#10977)
  • Adicionados Get-Clipboard e Set-Clipboard cross-platform (#10340)
  • Correção para definir o caminho original do objeto do sistema de arquivos para não ter barra adicional de final (#10959)
  • $null de suporte para ConvertTo-Json (#10947)
  • Adicionar Out-Printer comando de volta no Windows (#10906)
  • Corrigir Start-Job -WorkingDirectory com espaço em branco (#10951)
  • Devolver valor padrão ao receber nulo para uma configuração em PSConfiguration.cs (#10963) (Obrigado @iSazonov!)
  • Tratar a exceção de IO como não terminante (#10950)
  • Adicionar assembly GraphicalHost para habilitar Out-GridView, Show-Command e Get-Help -ShowWindow (#10899)
  • Veja o ComputerName via pipeline em Get-HotFix (#10852) (Obrigado @kvprasoon!)
  • Corrija a completação de aba para parâmetros para que mostrem parâmetros comuns como disponíveis (#10850)
  • Corrija GetCorrectCasedPath() para primeiro verificar se alguma entrada de arquivo do sistema foi retornada antes de chamar First() (#10930)
  • Defina o diretório de trabalho para o diretório atual em Start-Job (#10920) (Obrigado @iSazonov!)
  • Mude o TabExpansion2 para não exigir -CursorColumn e trate como $InputScript.Length (#10849)
  • Handle case onde o Host não pode retornar Linhas ou Colunas da tela (#10938)
  • Corrigir o uso de cores de destaque para hosts que não as suportam (#10937)
  • Adicionar de volta Update-List comando (#10922)
  • Atualize o ID FWLink para Clear-RecycleBin (#10925)
  • Durante a conclusão da tabulação, pule o arquivo se não conseguir ler atributos do arquivo (#10910)
  • Adicionar Clear-RecycleBin de volta para Windows (#10909)
  • Adicionar $env:__SuppressAnsiEscapeSequences para controlar se a sequência de escape VT deve ser usada na saída (#10814)
  • Adicionar -NoEmphasize parâmetro para colorizar Select-String saída (#8963) (Obrigado @derek-xia!)
  • Adicionar de volta Get-HotFix cmdlet (#10740)
  • Torne Add-Type utilizável em aplicações que hospedam PowerShell (#10587)
  • Use uma ordem de avaliação mais eficaz em LanguagePrimitives.IsNullLike() (#10781) (Obrigado @vexx32!)
  • Melhorar o tratamento de entradas por tubulação de coleta mista e fluxos de entrada em Format-Hex (#8674) (Obrigado @vexx32!)
  • Use a conversão de tipo nas tabelas hash do SSHConnection quando o valor não corresponder ao tipo esperado (#10720) (Obrigado @SeeminglyScience!)
  • Corrija Get-Content -ReadCount comportamento 0 quando -TotalCount está configurado (#10749) (Obrigado @eugenesmlv!)
  • Mensagem de erro de acesso negado por reformulação em Get-WinEvent (#10639) (Obrigado @iSazonov!)
  • Ative a completude de tabulação para atribuição de variáveis que estejam em enum ou tipo restrito (#10646)
  • Remover a propriedade remota SourceLength não utilizada causando problemas de formatação (#10765)
  • Adicionar -Delimiter parâmetro à ConvertFrom-StringData (#10665) (Obrigado @steviecoaster!)
  • Adicionar o parâmetro posicional para o ScriptBlock ao usar Invoke-Command com SSH (#10721) (Obrigado @machgo!)
  • Mostrar informações de contexto de linha se houver múltiplas linhas, mas sem nome de script para o ConciseView (#10746)
  • Adicionar suporte para caminhos \wsl$\ ao provedor do sistema de arquivos (#10674)
  • Adicionar o texto faltante do token para TokenKind.QuestionMark no analisador (#10706)
  • Defina o diretório de trabalho atual de cada script ForEach-Object -Parallel em execução para a mesma localização do script que chama. (#10672)
  • Substitua api-ms-win-core-file-l1-2-2.dll por Kernell32.dll para as APIs FindFirstStreamW e FindNextStreamW (#10680) (Obrigado @iSazonov!)
  • Ajuste de ajuda para formatação do script para ser mais tolerante ao StrictMode (#10563)
  • Adicionar -SecurityDescriptorSDDL parâmetro ao New-Service (#10483) (Obrigado @kvprasoon!)
  • Remover a saída informativa, consolidar o uso de ping em Test-Connection (#10478) (Obrigado @vexx32!)
  • Leia pontos especiais de reparo sem acessá-los (#10662) (Obrigado @iSazonov!)
  • Saída Clear-Host direta para o terminal (#10681) (Obrigado @iSazonov!)
  • Adicionar de volta uma nova linha para agrupar com Format-Table e -Property (#10653)
  • Remover [ValidateNotNullOrEmpty] de -InputObject em Get-Random para permitir a string vazia (#10644)
  • Torne o algoritmo de distância de string do sistema de sugestões insensível a maiúsculas (#10549) (Obrigado @iSazonov!)
  • Corrigir exceção de referência nula no processamento de entrada ForEach-Object -Parallel (#10577)
  • Adicionar definições de políticas de grupo PowerShell (#10468)
  • Atualize o host do console para suportar sequências de controle XTPUSHSGR/XTPOPSGR VT usadas em cenários de composabilidade. (#10208)
  • Adicionar o parâmetro WorkingDirectory ao Start-Job (#10324) (Obrigado @davinci26!)
  • Remova o gerenciador de eventos que causava mudanças de breakpoint serem replicadas erroneamente para o depurador de runspace do host (#10503) (Obrigado @KirkMunro!)
  • Substitua api-ms-win-core-job-12-1-0.dll por Kernell32.dll em Microsoft.PowerShell.Commands.NativeMethods P/Invoke API(#10417) (Obrigado @iSazonov!)
  • Corrigir a saída errada para New-Service na atribuição de variáveis e -OutVariable (#10444) (Obrigado @kvprasoon!)
  • Corrija problemas globais de ferramentas relacionadas ao código de saída, parâmetros de linha de comando e caminho com espaços (#10461)
  • Corrigir recursão no OneDrive - mudar FindFirstFileEx() para usar o tipo SafeFindHandle (#10405)
  • Pule o carregamento automático do PSReadLine no Windows se o leitor de tela NVDA estiver ativo (#10385)
  • Aumentar as versões do módulo built-with-PowerShell para 7.0.0.0 (#10356)
  • Adicionar um erro de lançamento em Add-Type se um tipo com o mesmo nome já existir (#9609) (Obrigado @iSazonov!)

Performance

  • Evite usar closure em Parser.SaveError (#11006)
  • Melhorar o cache ao criar novas instâncias Regex (#10657) (Obrigado @iSazonov!)
  • Melhorar o processamento dos dados de tipo embutidos do PowerShell a partir de types.ps1xml, typesV3.ps1xml e GetEvent.types.ps1xml (#10898)
  • Atualize PSConfiguration.ReadValueFromFile para torná-lo mais rápido e eficiente em memória (#10839)
  • Adicione pequenas melhorias de desempenho para a inicialização do espaço de jogo (#10569) (Obrigado @iSazonov!)
  • Tornar ForEach-Object mais rápido para seus cenários mais comuns (#10454) e corrigir ForEach-Object -Parallel problema de desempenho com muitos espaços de execução (#10455)

Limpeza de código

  • Mude o texto dos comentários e elementos para atender aos padrões Microsoft (#11304)
  • Problemas de estilo de limpeza em Compiler.cs (#10368) (Obrigado @iSazonov!)
  • Remova o conversor de tipos não utilizado para CommaDelimitedStringCollection (#11000) (Obrigado @iSazonov!)
  • Estilo de limpeza em InitialSessionState.cs (#10865) (Obrigado @iSazonov!)
  • Limpeza de código para a classe PSSession (#11001)
  • Remova o recurso 'rodar Update-Help não funcionando de Get-Help quando Get-Help rodar pela primeira vez' (#10974)
  • Problemas de estilo de correção (#10998) (Obrigado @iSazonov!)
  • Limpeza: use o tipo de pseudônimo embutido (#10882) (Obrigado @iSazonov!)
  • Remova a chave de configuração não usada ConsolePrompting e evite a criação desnecessária de strings ao consultar a configuração ExecutionPolicy (#10985)
  • Desativar a verificação de notificação de atualização para builds diárias (#10903) (Obrigado @bergmeister!)
  • Restabelecer API de depuração perdida em #10338 (#10808)
  • Remover a referência WorkflowJobSourceAdapter que não é mais usada (#10326) (Obrigado @KirkMunro!)
  • Cleanup COM faz interface no código de lista de salto corrigindo atributos PreserveSig (#9899) (Obrigado @weltkante!)
  • Adicione um comentário explicando por que -ia não é o pseudônimo para -InformationAction parâmetro comum (#10703) (Obrigado @KirkMunro!)
  • Renomear InvokeCommandCmdlet.cs para InvokeExpressionCommand.cs (#10659) (Obrigado @kilasuit!)
  • Adicionar pequenas limpezas de código relacionadas às notificações de atualização (#10698)
  • Remover a lógica de fluxo de trabalho obsoleta dos scripts de configuração remota (#10320) (Obrigado @KirkMunro!)
  • Atualize o formato de ajuda para usar o caso correto (#10678) (Obrigado @tnieto88!)
  • Limpar problemas no estilo CodeFactor que estão chegando em commits no último mês (#10591) (Obrigado @iSazonov!)
  • Corrigir erro de digitação na descrição do recurso experimental PSTernaryOperator (#10586) (Obrigado @bergmeister!)
  • Converter o ActionPreference.Suspender o valor da enumeração em um estado reservado não suportado e remover a restrição ao usar o ActionPreference.Ignore nas variáveis de preferência (#10317) (Obrigado @KirkMunro!)
  • Substitua ArrayList por List<T> para obter código mais legível e confiável sem alterar funcionalidades (#10333) (Obrigado @iSazonov!)
  • Faça correções no estilo de código do TestConnectionCommand (#10439) (Obrigado @vexx32!)
  • Limpar o AutomationEngine e remover chamadas extras de método SetSessionStateDrive (#10416) (Obrigado @iSazonov!)
  • Renomear o ParameterSetName padrão de volta para Delimiter para ConvertTo-Csv e ConvertFrom-Csv (#10425)

Tools

  • Adicionar a configuração padrão para a propriedade SDKToUse para que ela seja construída no VS (#11085)
  • Install-Powershell.ps1: Adicionar parâmetro para usar a instalação do MSI (#10921) (Obrigado @MJECloud!)
  • Adicione exemplos básicos para install-powershell.ps1 (#10914) (Obrigado @kilasuit!)
  • Faça Install-PowerShellRemoting.ps1 gerencie a string vazia no parâmetro PowerShellHome (#10526) (Obrigado @Orca88!)
  • Troque de /etc/lsb-release para /etc/os-release em install-powershell.sh (#10773) (Obrigado @Himura2la!)
  • Verifique pwsh.exe e pwsh na versão diária no Windows (#10738) (Obrigado @centreboard!)
  • Remova a torneira desnecessária no installpsh-osx.sh (#10752)
  • Atualize install-powershell.ps1 para verificar a versão diária já instalada (#10489)

Testes

  • Deixe o teste DSC não confiável pendente (#11131)
  • Corrigir o teste stringdata para validar corretamente as chaves das tabelas de hash (#10810)
  • Módulos de teste de descarga (#11061) (Obrigado @iSazonov!)
  • Aumentar o tempo entre as tentativas de releitura do URL de teste (#11015)
  • Atualize os testes para descrever com precisão as ações dos testes. (#10928) (Obrigado @romero126!)
  • Pular temporariamente o teste instável TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
  • Torne o teste de vazamento do gerenciador de eventos estável (#10790)
  • Sincronização de maiúsculas no CI YAML (#10767) (Obrigado @RDIL!)
  • Teste de adicionar para a correção de vazamento do gerenciador de eventos (#10768)
  • Adicionar Get-ChildItem teste (#10507) (Obrigado @iSazonov!)
  • Substituir a linguagem ambígua para testes de switch para parameter para precisão (#10666) (Obrigado @romero126!)
  • Adicionar verificação experimental aos testes de ForEach-Object -Parallel (#10354) (Obrigado @KirkMunro!)
  • Testes de atualização para validação Alpine (#10428)

Melhorias na Construção e Pacote

  • Corrigir a assinatura de pacotes Nuget para build de Pacotes Coordenados (#11316)
  • Atualizar dependências do PowerShell Gallery e do NuGet (#11323)
  • Avance o Microsoft.ApplicationInsights da versão 2.11.0 para a 2.12.0 (#11305)
  • Avance o Microsoft.CodeAnalysis.CSharp da versão 3.3.1 para a 3.4.0 (#11265)
  • Pacotes de atualizações para Debian 10 e 11 (#11236)
  • Permitir apenas recursos experimentais antes do RC (#11162)
  • Atualização da versão mínima do macOS (#11163)
  • Ampliar o NJsonSchema de 10.0.27 para 10.0.28 (#11170)
  • Atualizando links em README.md e metadata.json para Preview.5 (#10854)
  • Selecione os arquivos para testes de conformidade que pertencem ao PowerShell (#10837)
  • Permita que o pacote msix do win7x86 seja construído. (Interno 10515)
  • Permitir que versões semânticas sejam passadas para a função NormalizeVersion (#11087)
  • Ampliar o framework .NET core para 3.1-preview.3 (#11079)
  • Elevar o PSReadLine da 2.0.0-beta5 para a 2.0.0-beta6 em /src/Modules (#11078)
  • Eleve Newtonsoft.Json de 12.0.2 para 12.0.3 (#11037) (#11038)
  • Adicionar os pacotes Debian 10, 11 e CentOS 8 (#11028)
  • Enviar Build-Info arquivo Json com o campo ReleaseDate (#10986)
  • Ampliar o framework core do .NET para 3.1-preview.2 (#10993)
  • Habilitar a compilação do pacote x86 MSIX (#10934)
  • Atualize a URL do script de instalação do SDK dotnet em build.psm1 (#10927)
  • Bump Markdig. Assinado de 0.17.1 a 0.18.0 (#10887)
  • Elevar o ThreadJob da 2.0.1 para a 2.0.2 (#10886)
  • Atualize o módulo de manifestos e empacotamento do AppX para cumprir os requisitos da MS Store (#10878)
  • Atualizar a referência do pacote para o PowerShell SDK para preview.5 (Internal 10295)
  • Atualização ThirdPartyNotices.txt (#10834)
  • Atualize Microsoft.PowerShell.Native para 7.0.0-preview.3 (#10826)
  • Avance o Microsoft.ApplicationInsights da versão 2.10.0 para a 2.11.0 (#10608)
  • Ampliar o NJsonSchema de 10.0.24 para 10.0.27 (#10756)
  • Adicionar suporte a MacPorts ao sistema de compilação (#10736) (Obrigado @Lucius-Q-User!)
  • Ampliar o Gerenciamento de Pacotes da 1.4.4 para a 1.4.5 (#10728)
  • Ampliar o NJsonSchema de 10.0.23 para 10.0.24 (#10635)
  • Adicionar variável de ambiente para diferenciar a telemetria cliente/servidor no MSI (#10612)
  • Ampliar PSDesiredStateConfiguration de 2.0.3 para 2.0.4 (#10603)
  • Avance o Microsoft.CodeAnalysis.CSharp de 3.2.1 para 3.3.1 (#10607)
  • Atualização para .Net Core 3.0 RTM (#10604) (Obrigado @bergmeister!)
  • Atualizar o empacotamento do MSIX para que a versão cumpra os requisitos da Windows Store (#10588)
  • Ampliar PowerShellGet da versão 2.2 para 2.2.1 (#10382)
  • Mudar a versão do PackageManagement da 1.4.3 para a 1.4.4 (#10383)
  • Atualização README.md e metadata.json para 7.0.0-preview.4 (Internal 10011)
  • Atualize a versão do .Net Core 3.0 do Preview 9 para o RC1 (#10552) (Obrigado @bergmeister!)
  • Geração de lista de Funcional Experimental Fix (Internal 9996)
  • Avance a versão PSReadLine da 2.0.0-beta4 para a 2.0.0-beta5 (#10536)
  • Corrigir script de build de release para definir a tag release
  • Atualização da versão do Microsoft.PowerShell.Native para 7.0.0-preview.2 (#10519)
  • Atualize para Netcoreapp3.0 preview9 (#10484) (Obrigado @bergmeister!)
  • Certifique-se de que a build diária coordenada, saiba que é uma build diária (#10464)
  • Atualize a compilação combinada do pacote para lançar as compilações diárias (#10449)
  • Remover referência de appveyor (#10445) (Obrigado @RDIL!)
  • Ampliar a versão do NJsonSchema da 10.0.22 para a 10.0.23 (#10421)
  • Remova a exclusão da pasta de build linux-x64 porque algumas dependências do Alpine precisam dela (#10407)

Documentação e Conteúdo de Ajuda

  • Refatorar logs de alteração em um log por lançamento (#11165)
  • Corrigir FWLinks para documentos de ajuda online do PowerShell 7 (#11071)
  • Atualização CONTRIBUTING.md (#11096) (Obrigado @mklement0!)
  • Links para o documento de instalação de correção em README.md (#11083)
  • Adiciona exemplos ao install-powershell.ps1 script (#11024) (Obrigado @kilasuit!)
  • Correção para Select-String ênfase e Import-DscResource em CHANGELOG.md (#10890)
  • Remova o link obsoleto de powershell-beginners-guide.md (#10926)
  • Registros de mudanças estáveis e de manutenção (#10527)
  • Atualização usada na versão .NET na documentação de compilação (#10775) (Obrigado @Greg-Smulko!)
  • Substituir links do MSDN para o Microsoft Learn em powershell-beginners-guide.md (#10778) (Obrigado @iSazonov!)
  • Link de visão geral do DSC quebrado (#10702)
  • Atualize Support_Question.md para linkar o Stack Overflow como outro recurso da comunidade (#10638) (Obrigado @mklement0!)
  • Adicionar arquitetura de processador ao modelo de solicitação de distribuição (#10661)
  • Adicionar novo livro de MoL do PowerShell para aprender a documentação do PowerShell (#10602)
  • Atualização README.md e metadados para as versões v6.1.6 e v6.2.3 (#10523)
  • Corrigir um erro de digitação em README.md (#10465) (Obrigado @vedhasp!)
  • Adicione uma referência ao módulo PSKoans na documentação dos Recursos de Aprendizagem (#10369) (Obrigado @vexx32!)
  • Atualização README.md e metadata.json para 7.0.0-preview.3 (#10393)