What's new in PowerShell 7.0 (Novidades no PowerShell 7.0)

O PowerShell 7.0 é uma edição open source multiplataformas (Windows, macOS e Linux) do PowerShell, criada para gerir ambientes heterogéneos e cloud híbrida.

Nesta versão, vamos introduzir várias novas funcionalidades, incluindo:

  • Paralelização de pipelines com ForEach-Object -Parallel
  • Novos operadores:
    • Operador Ternary: a ? b : c
    • Operadores da cadeia de pipelines: || e &&
    • Operadores condicionais nulos: ?? e ??=
  • Uma vista de erro e cmdlet dinâmicos e Get-Error simplificados para uma investigação mais fácil de erros
  • Uma camada de compatibilidade que permite aos utilizadores importar módulos numa sessão implícita de Windows PowerShell
  • Notificações automáticas de nova versão
  • A capacidade de invocar recursos do DSC diretamente a partir do PowerShell 7 (experimental)

Para ver uma lista completa de funcionalidades e correções, veja os registos de alterações.

Onde posso instalar o PowerShell?

Atualmente, o PowerShell 7 suporta os seguintes sistemas operativos 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 os tipos ARM32 e ARM64 de Debian, Ubuntu e ARM64 Alpine Linux.

Verifique as instruções de instalação do seu sistema operativo preferido , Windows, macOS ou Linux.

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

Nota

Atualmente, o Debian 10 e o CentOS 8 não suportam a comunicação remota winRM. Para obter detalhes sobre como configurar a comunicação remota baseada em SSH, veja PowerShell Remoting over SSH (Comunicação Remota do PowerShell através de SSH).

Para obter informações mais atualizadas sobre os sistemas operativos suportados e o ciclo de vida do suporte, veja o Ciclo de Vida do Suporte do PowerShell.

Executar o PowerShell 7

O PowerShell 7 é instalado num diretório separadamente do Windows PowerShell. Isto permite-lhe executar o PowerShell 7 lado a lado com 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 está instalado no %programfiles%\PowerShell\7
  • A %programfiles%\PowerShell\7 pasta é adicionada a $env:PATH

O pacote de instalador do PowerShell 7 atualiza as 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

Nota

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

Compatibilidade retrocompatibilidade melhorada com Windows PowerShell

O PowerShell 7.0 marca uma mudança para o .NET Core 3.1, o que permite uma compatibilidade significativamente mais retroativa com módulos de Windows PowerShell existentes. Isto inclui muitos módulos no Windows que requerem funcionalidades Out-GridView gui como e Show-Command, bem como muitos módulos de gestão de funções que são enviados como parte do Windows.

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

Para obter mais informações sobre os módulos da Microsoft que funcionam com o PowerShell 7.0, consulte a Tabela de Compatibilidade de Módulos.

Execução paralela adicionada ao ForEach-Object

O ForEach-Object cmdlet, que itera itens numa coleção, tem agora paralelismo incorporado com o novo parâmetro Parallel .

Por predefinição, os blocos de script paralelos utilizam o diretório de trabalho atual do autor da chamada que iniciou as tarefas paralelas.

Este exemplo obtém 50 000 entradas de registo de 5 registos do sistema num computador 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 Paralelo especifica o bloco de script que é executado em paralelo para cada nome de registo de entrada.

O novo parâmetro ThrottleLimit limita o número de blocos de script em execução em paralelo num determinado momento. A predefinição é 5.

Utilize a $_ variável para representar o objeto de entrada atual no bloco de script. Utilize o $using: âmbito para transmitir referências de variáveis para o bloco de scripts em execução.

Para obter mais informações sobre ForEach-Object.

Operador Ternary

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

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

A condition-expression é sempre avaliada e o respetivo resultado é convertido num Booleano para determinar que ramo é avaliado a seguir:

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

Por exemplo:

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

Neste exemplo, se o caminho existir, será apresentado Caminho . Se o caminho não existir, será apresentado Caminho não encontrado .

Para obter mais informações sobre Se.

Operadores da cadeia de pipelines

O PowerShell 7 implementa os && operadores e || para encadear condicionalmente pipelines. Estes 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, bem como símbolos de processamento condicional na Shell de Comandos do Windows (cmd.exe).

O && operador executa o pipeline do lado direito, se o pipeline esquerdo tiver sido bem-sucedido. Por outro lado, o || operador executa o pipeline do lado direito se o pipeline esquerdo falhar.

Nota

Estes operadores utilizam as $? variáveis e $LASTEXITCODE para determinar se um pipeline falhou. Isto permite-lhe utilizá-los 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 é bem-sucedido, o segundo comando não é executado:

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

Aqui, o primeiro comando falha, pelo que o segundo comando é executado:

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

Para obter mais informações sobre os Operadores de Cadeia de Pipelines.

Agrupamento nulo, atribuição e operadores condicionais

O PowerShell 7 inclui operadores ??nulos de agrupamento, atribuição ??=condicional nula e operadores ?. de acesso condicional nulo e ?[].

Operador de agrupamento nulo??

O operador ?? null-coalescing devolve o valor do seu operando esquerdo se não for nulo. Caso contrário, avalia o operando do lado direito e devolve o resultado. O ?? operador não avalia o operando do lado direito se o operando esquerdo for avaliado como não nulo.

$x = $null
$x ?? 100
100

No exemplo seguinte, o operando à direita 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 nulo atribui o valor do seu operando à direita ao operando esquerdo apenas se o operando esquerdo for avaliado como nulo. O ??= operador não avalia o operando do lado direito se o operando esquerdo for avaliado como não nulo.

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

No exemplo seguinte, o operando à direita não é avaliado:

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

Operadores de acesso condicional nulo ?. e ? [] (Experimental)

Nota

Esta é uma funcionalidade experimental denominada PSNullConditionalOperators. Para obter mais informações, veja Utilizar Funcionalidades Experimentais.

Um operador condicional nulo permite o acesso de membros, ?.ou acesso a elementos, ?[]ao operando apenas se esse operando for avaliado como não nulo; caso contrário, devolve nulo.

Nota

Uma vez que o PowerShell permite ? fazer parte do nome da variável, é necessária uma especificação formal do nome da variável para utilizar estes operadores. Por isso, é necessário utilizar {} em torno dos nomes de variáveis como ${a} ou quando ? faz parte do nome ${a?}da variável .

No exemplo seguinte, é devolvido o valor da propriedade membro Estado :

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

O exemplo seguinte devolve nulo, sem tentar aceder ao nome de membro Estado:

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

Da mesma forma, com ?[], é devolvido o valor do elemento:

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

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

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

Para obter mais informações , About_Operators.

Nova vista ConciseView e cmdlet Get-Error

O PowerShell 7.0 melhora a apresentação de mensagens de erro para melhorar a legibilidade de erros interativos e de script com uma nova vista predefinida ConciseView. As vistas são selecionáveis pelo utilizador através da variável $ErrorViewde preferência .

Com o ConciseView, se um erro não for de um script ou de um analisador, será uma mensagem de erro de linha única:

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, o PowerShell devolve uma mensagem de erro com várias linhas que contém o erro, um ponteiro e uma mensagem de erro que mostra onde está o erro nessa linha. Se o terminal não suportar sequências de escape de cor ANSI (VT100), as cores não serão apresentadas.

Apresentação de erros a partir de um script

A vista predefinida no PowerShell 7 é ConciseView. A vista predefinida anterior era NormalView e pode selecioná-la ao definir a variável $ErrorViewde preferência .

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

Nota

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

Um novo cmdlet Get-Error fornece uma vista detalhada completa do erro completamente qualificado quando pretendido. Por predefinição, o cmdlet apresenta todos os detalhes, incluindo exceções internas, do último erro ocorrido.

Apresentação de Get-Error

O Get-Error cmdlet suporta a entrada do pipeline com a variável $Errorincorporada . Get-Error apresenta todos os erros de piped.

$Error | Get-Error

O Get-Error cmdlet suporta o parâmetro Mais Recente, permitindo-lhe especificar quantos erros da sessão atual pretende apresentar.

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

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

Notificação de nova versão

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

Nota

A verificação de atualização ocorre durante a primeira sessão num determinado período de 24 horas. Por motivos de desempenho, a verificação de atualização é iniciada 3 segundos após o início da sessão. A notificação só é apresentada no início das sessões subsequentes.

Por predefinição, o PowerShell subscreve um de dois canais de notificação diferentes, consoante a respetiva versão/ramo. Suportadas, as versões geralmente disponíveis (GA) do PowerShell só devolvem notificações para versões de DISPONIBILIDADE atualizadas. As versões Preview e Release Candidate (RC) notificam as atualizações para pré-visualização, RC e versões ga.

O comportamento da notificação de atualização pode ser alterado com a variável de $Env:POWERSHELL_UPDATECHECK ambiente. São suportados os seguintes valores:

  • A predefinição é igual a não definir $Env:POWERSHELL_UPDATECHECK
    • Ga releases notify of updates to GA releases
    • As versões de Pré-visualização/RC notificam as atualizações para versões de disponibilidade geral e de pré-visualização
  • Desativar desativa a funcionalidade de notificação de atualização
  • A LTS notifica apenas as atualizações para versões ga de manutenção a longo prazo (LTS)

Nota

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

Para definir a notificação de versão apenas para LTS versões:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

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

$Env:POWERSHELL_UPDATECHECK = 'Default'

Para obter mais informações sobre notificações de atualização.

Novo suporte de Recursos do DSC com Invoke-DSCResource (Experimental)

Nota

Esta é uma funcionalidade experimental denominada PSDesiredStateConfiguration.InvokeDscResource. Para obter mais informações, veja Utilizar Funcionalidades Experimentais.

O Invoke-DscResource cmdlet executa um método de um recurso de Desired State Configuration (DSC) do PowerShell especificado.

Este cmdlet invoca um recurso do DSC diretamente, sem criar um documento de configuração. Com este cmdlet, os produtos de gestão de configuração podem gerir o Windows ou o Linux com recursos do DSC. Este cmdlet também permite a depuração de recursos quando o motor DSC está em execução com a depuração ativada.

Este comando invoca o método Set de um recurso com o nome WindowsProcess e fornece as propriedades obrigatórias Caminho e Argumentos para iniciar o processo do Windows especificado.

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

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

Alterações e Melhorias Interruptivas

Alterações Interruptivas

  • Tornar a notificação de atualização suporta LTS e canais predefinidos (#11132)
  • Atualize Test-Connection para funcionar mais como a do Windows PowerShell (#10697) (Obrigado)@vexx32!)
  • Preservar $? para ParenExpression, SubExpression e ArrayExpression (#11040)
  • Definir o diretório de trabalho para o diretório atual no Start-Job (#10920) (Obrigado) @iSazonov!)
  • Faça $PSCulture refletir consistentemente as alterações à cultura na sessão (#10138) (Obrigado @iSazonov!)

Atualizações e Correções do Motor

  • Melhorias nas APIs de ponto de interrupção para cenários remotos (#11312)
  • Corrigir a fuga da definição de classe do PowerShell para outro Espaço de Execução (#11273)
  • Corrigir uma regressão na formatação causada pelo primitivo FirstOrDefault adicionado em 7.0.0-Preview1 (#11258)
  • Módulos Adicionais da Microsoft para monitorizar na Telemetria PS7 (#10751)
  • Tornar as funcionalidades aprovadas não experimentais (#11303)
  • Atualizar ConciseView para utilizar TargetObject, se aplicável (#11075)
  • Corrigir NullReferenceException nos métodos públicos CompletionCompleters (#11274)
  • Corrigir a verificação do estado do thread de apartamentos em plataformas não Windows (#11301)
  • Atualizar a definição PSModulePath para concatenar as variáveis de ambiente do processo e do computador (#11276)
  • Aumentar o .NET Core para 3.1.0 (#11260)
  • Corrigir a deteção de $PSHOME à frente de $env:PATH (#11141)
  • Permitir que pwsh herda $env:PSModulePath e ative powershell.exe para iniciar corretamente (#11057)
  • Mover para a pré-visualização 1 do .NET Core 3.1 (#10798)
  • Refatorizar verificações de etiquetas de reativação no fornecedor do sistema de ficheiros (#10431) (Obrigado @iSazonov!)
  • Substituir CR e nova linha por um caráter de 0x23CE no registo de scripts (#10616)
  • Corrigir uma fuga de recursos ao anular o registo do processador de eventos em AppDomain.CurrentDomain.ProcessExit (#10626)
  • Adicionar suporte a ActionPreference.Break para entrar no depurador quando são geradas mensagens de Depuração, Erro, Informações, Progresso, Verboso ou Aviso (#8205) (Obrigado) @KirkMunro!)
  • Ative os suplementos do painel de controlo inicial no PowerShell sem especificar .CPL extensão. (#9828)
  • Suportar números negativos no operador -split (#8960) (Obrigado @ece-jacob-scott!)

Atualizações e Correções de Cmdlets Gerais

  • Correção do problema no Raspbian para definir a data das alterações de ficheiro na Funcionalidade Experimental UnixStat (#11313)
  • Adicionar -AsPlainText ao ConvertFrom-SecureString (#11142)
  • Foi adicionada a verificação da versão do WindowsPS para WinCompat (#11148)
  • Corrigir relatórios de erros em alguns cenários winCompat (#11259)
  • Adicionar resolução binária nativa (#11032) (Obrigado @iSazonov!)
  • Atualizar o cálculo da largura do caráter para respeitar corretamente os carateres CJK (#11262)
  • Adicionar Unblock-File para macOS (#11137)
  • Corrigir a regressão no Get-PSCallStack (#11210) (Obrigado) @iSazonov!)
  • Remover o carregamento automático do módulo ScheduledJob ao utilizar cmdlets de tarefas (#11194)
  • Adicione OutputType ao cmdlet Get-Error e preserve os nomes de tipo originais (#10856)
  • Corrigir referência nula na propriedade SupportsVirtualTerminal (#11105)
  • Adicionar verificação de limite no Get-WinEvent (#10648) (Obrigado @iSazonov!)
  • Corrigir o runtime de comandos para que StopUpstreamCommandsException não seja preenchido em -ErrorVariable (#10840)
  • Defina a codificação de saída como [Consola]::OutputEncoding para comandos nativos (#10824)
  • Suportar blocos de código de várias linhas em exemplos (#10776) (Obrigado @Greg-Smulko!)
  • Add Culture parameter to Select-String cmdlet (#10943) (Thanks @iSazonov!)
  • Corrigir Start-Job caminho do diretório de trabalho com a barra invertida à direita (#11041)
  • ConvertFrom-Json: Desembrulhar coleções por predefinição (#10861) (Obrigado) @danstur!)
  • Utilizar hashtable sensível a maiúsculas e minúsculas para Group-Object cmdlet com comutadores -CaseSensitive e -AsHashtable (#11030) (Obrigado) @vexx32!)
  • Processar a exceção se a enumeração de ficheiros falhar ao reconstruir o caminho para ter o invólucro correto (#11014)
  • Corrigir a ConciseView para mostrar a Atividade em vez do meu Comando (#11007)
  • Permitir que os cmdlets Web ignorem os estados de erro HTTP (#10466) (Obrigado @vdamewood!)
  • Corrigir o piping de mais de um CommandInfo para Get-Command (#10929)
  • Adicionar novamente Get-Counter cmdlet para Windows (#10933)
  • Faça ConvertTo-Json tratar [AutomationNull]::Value e [NullString]::Value as $null (#10957)
  • Remover parênteses do endereço ipv6 para remoting SSH (#10968)
  • Corrigir falha se o comando enviado para pwsh for apenas espaço em branco (#10977)
  • Adição de Get-Clipboard e Set-Clipboard entre plataformas (#10340)
  • Corrigir a definição do caminho original do objeto do sistema de ficheiros para não ter uma barra extra à direita (#10959)
  • Suporte $null para ConvertTo-Json (#10947)
  • Adicionar novamente Out-Printer comando no Windows (#10906)
  • Corrigir Start-Job -WorkingDirectory com o espaço em branco (#10951)
  • Devolver valor predefinido ao obter um valor nulo para uma definição em PSConfiguration.cs (#10963) (Obrigado) @iSazonov!)
  • Processar a exceção de E/S como não terminando (#10950)
  • Adicionar assemblagem GraphicalHost para ativar Out-GridView, Show-Command e Get-Help -ShowWindow (#10899)
  • Take ComputerName via pipeline in Get-HotFix (#10852) (Thanks @kvprasoon!)
  • Corrigir a conclusão do separador para parâmetros para que mostre parâmetros comuns como disponíveis (#10850)
  • Corrija GetCorrectCasedPath() para verificar primeiro se as entradas de ficheiros do sistema são devolvidas antes de chamar First() (#10930)
  • Definir o diretório de trabalho para o diretório atual no Start-Job (#10920) (Obrigado @iSazonov!)
  • Altere TabExpansion2 para não exigir -CursorColumn e trate como $InputScript.Length (#10849)
  • Processar o caso em que o Anfitrião não pode devolver Linhas ou Colunas do ecrã (#10938)
  • Corrigir a utilização de cores de destaque para anfitriões que não os suportam (#10937)
  • Adicionar novamente Update-List comando (#10922)
  • Atualizar o ID do FWLink para Clear-RecycleBin (#10925)
  • Durante a conclusão do separador, ignore o ficheiro se não conseguir ler atributos de ficheiro (#10910)
  • Adicionar novamente Clear-RecycleBin para Windows (#10909)
  • Adicionar $env:__SuppressAnsiEscapeSequences para controlar se tem uma sequência de escape VT na saída (#10814)
  • Adicionar parâmetro -NoEmphasize para colorir Select-String saída (#8963) (Obrigado) @derek-xia!)
  • Adicionar novamente Get-HotFix cmdlet (#10740)
  • Tornar Add-Type utilizável em aplicações que alojam o PowerShell (#10587)
  • Utilize uma ordem de avaliação mais eficaz em LanguagePrimitives.IsNullLike() (#10781) (Obrigado) @vexx32!)
  • Melhorar o processamento de entradas canalizadas de coleção mista e fluxos canalizados de entrada no Format-Hex (#8674) (Obrigado) @vexx32!)
  • Utilizar a conversão de tipo em tabelas hash SSHConnection quando o valor não corresponder ao tipo esperado (#10720) (Obrigado @SeeminglyScience!)
  • Corrigir Get-Content comportamento -ReadCount 0 quando -TotalCount estiver definido (#10749) (Obrigado) @eugenesmlv!)
  • Mensagem de erro Acesso de palavra nova negado no Get-WinEvent (#10639) (Obrigado) @iSazonov!)
  • Ativar a conclusão do separador para atribuição de variáveis que seja enum ou tipo restrito (#10646)
  • Remover a propriedade remoting SourceLength não utilizada que causa problemas de formatação (#10765)
  • Adicionar parâmetro -Delimitador ao ConvertFrom-StringData (#10665) (Obrigado) @steviecoaster!)
  • Adicionar parâmetro posicional para ScriptBlock ao utilizar Invoke-Command com SSH (#10721) (Obrigado) @machgo!)
  • Mostrar informações de contexto de linha se múltiplas linhas, mas nenhum nome de script para ConciseView (#10746)
  • Adicionar suporte para \wsl$\ caminhos para o fornecedor de sistema de ficheiros (#10674)
  • Adicione o texto do token em falta para TokenKind.QuestionMark no analisador (#10706)
  • Defina o diretório de trabalho atual de cada ForEach-Object -Script de execução paralelo para a mesma localização que o script de chamadas. (#10672)
  • Substitua api-ms-win-core-file-l1-2-2.dll por Kernell32.dll para as APIs FindFirstStreamW e FindNextStreamW (#10680) (Obrigado) @iSazonov!)
  • Ajuste o script de formatação da ajuda para ser mais tolerante a StrictMode (#10563)
  • Adicionar o parâmetro -SecurityDescriptorSDDL ao New-Service (#10483) (Obrigado) @kvprasoon!)
  • Remover o resultado informativo, consolidar a utilização de ping no Test-Connection (#10478) (Obrigado) @vexx32!)
  • Ler pontos de reanálise especiais sem aceder aos mesmos (#10662) (Obrigado @iSazonov!)
  • Direct Clear-Host output to terminal (#10681) (Thanks @iSazonov!)
  • Adicionar nova linha para agrupamento com Format-Table e -Property (#10653)
  • Remover [ValidateNotNullOrEmpty] de -InputObject no Get-Random para permitir a cadeia vazia (#10644)
  • Faça sugestões de algoritmo de distância de cadeia de sistema sensível a maiúsculas e minúsculas (#10549) (Obrigado @iSazonov!)
  • Corrigir exceção de referência nula no ForEach-Object -Processamento de entrada paralelo (#10577)
  • Adicionar definições de política de grupo do PowerShell (#10468)
  • Atualize o anfitrião da consola para suportar sequências de controlo VT XTPUSHSGR/XTPOPSGR que são utilizadas em cenários de composabilidade. (#10208)
  • Adicionar parâmetro WorkingDirectory a Start-Job (#10324) (Obrigado) @davinci26!)
  • Remova o processador de eventos que estava a fazer com que as alterações ao ponto de interrupção fossem replicadas erroneamente para o depurador da área de execução do anfitrião (#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 o resultado errado para New-Service na atribuição de variáveis e -OutVariable (#10444) (Obrigado) @kvprasoon!)
  • Corrigir problemas globais de ferramentas em torno do código de saída, parâmetros da linha de comandos e caminho com espaços (#10461)
  • Corrigir a recursão no OneDrive – altere FindFirstFileEx() para utilizar o tipo SafeFindHandle (#10405)
  • Ignorar o carregamento automático do PSReadLine no Windows se o leitor de ecrã NVDA estiver ativo (#10385)
  • Aumente as versões do módulo incorporadas com o PowerShell para 7.0.0.0 (#10356)
  • Adicionar um erro ao Add-Type se já existir um tipo com o mesmo nome (#9609) (Obrigado) @iSazonov!)

Desempenho

  • Evite utilizar o encerramento em Parser.SaveError (#11006)
  • Melhorar a colocação em cache ao criar novas instâncias regex (#10657) (Obrigado) @iSazonov!)
  • Melhorar o processamento dos dados do tipo incorporado 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 termos de memória (#10839)
  • Adicionar pequenas melhorias de desempenho para inicialização do runspace (#10569) (Obrigado @iSazonov!)
  • Torne o ForEach-Object mais rápido para os cenários utilizados comumente (#10454) e corrija ForEach-Object -Problema de desempenho paralelo com muitas áreas de execução (#10455)

Limpeza de Código

  • Alterar texto de comentário e elemento para cumprir as normas da Microsoft (#11304)
  • Problemas de estilo de limpeza em Compiler.cs (#10368) (Obrigado @iSazonov!)
  • Remover o conversor de tipo 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 a funcionalidade "executar Update-Help de execução não funcional do Get-Help quando Get-Help é executada pela primeira vez" (#10974)
  • Corrigir problemas de estilo (#10998) (Obrigado) @iSazonov!)
  • Limpeza: utilize o alias de tipo incorporado (#10882) (Obrigado) @iSazonov!)
  • Remova a chave de definição não utilizada ConsolePrompting e evite a criação desnecessária de cadeias ao consultar a definição ExecutionPolicy (#10985)
  • Desativar a verificação de notificação de atualização para compilações diárias (#10903) (Obrigado @bergmeister!)
  • Restabelecer a API de depuração perdida em #10338 (#10808)
  • Remover a referência WorkflowJobSourceAdapter que já não é utilizada (#10326) (Obrigado @KirkMunro!)
  • Limpar interfaces COM no código de lista de saltos ao corrigir atributos PreserveSig (#9899) (Obrigado @weltkante!)
  • Adicione um comentário que descreve o motivo pelo qual -ia não é o alias para o parâmetro comum -InformationAction (#10703) (Obrigado) @KirkMunro!)
  • Mude o nome InvokeCommandCmdlet.cs para InvokeExpressionCommand.cs (#10659) (Obrigado @kilasuit!)
  • Adicionar pequenas limpezas de código relacionadas com notificações de atualização (#10698)
  • Remover a lógica de fluxo de trabalho preterida dos scripts de configuração remoting (#10320) (Obrigado @KirkMunro!)
  • Atualizar o formato de ajuda para utilizar o caso adequado (#10678) (Obrigado @tnieto88!)
  • Limpar problemas de estilo CodeFactor que vêm em consolidações para o último mês (#10591) (Obrigado @iSazonov!)
  • Corrigir erro de digitação na descrição da funcionalidade experimental PSTernaryOperator (#10586) (Obrigado) @bergmeister!)
  • Converta ActionPreference.Suspend enumeration value in a non-supported, reserved state, and remove restriction on using ActionPreference.Ignore in preference variables (#10317) (Thanks @KirkMunro!)
  • Substitua ArrayList pela Lista<T> para obter código mais legível e fiável sem alterar a funcionalidade (#10333) (Obrigado @iSazonov!)
  • Criar correções de estilo de código para TestConnectionCommand (#10439) (Obrigado @vexx32!)
  • Limpeza AutomationEngine e remover chamada de método SetSessionStateDrive extra (#10416) (Obrigado @iSazonov!)
  • Mude o nome parameterSetName predefinido para Delimitador para ConvertTo-Csv e ConvertFrom-Csv (#10425)

Ferramentas

  • Adicionar predefinição para a propriedade SDKToUse para que seja compilada no VS (#11085)
  • Install-Powershell.ps1: Adicionar parâmetro para utilizar a instalação MSI (#10921) (Obrigado) @MJECloud!)
  • Adicionar exemplos básicos para install-powershell.ps1 (#10914) (Obrigado) @kilasuit!)
  • Tornar Install-PowerShellRemoting.ps1 processar cadeia vazia no parâmetro PowerShellHome (#10526) (Obrigado) @Orca88!)
  • Mudar de /etc/lsb-release para /etc/os-release no install-powershell.sh (#10773) (Obrigado @Himura2la!)
  • Verifique pwsh.exe e pwsh na versão diária no Windows (#10738) (Obrigado @centreboard!)
  • Remover toque desnecessário no installpsh-osx.sh (#10752)
  • Atualizar install-powershell.ps1 para verificar a existência de compilação diária já instalada (#10489)

Testes

  • Tornar o teste de DSC não fiável pendente (#11131)
  • Corrigir o teste stringdata para validar corretamente as chaves de tabelas hash (#10810)
  • Descarregar módulos de teste (#11061) (Obrigado @iSazonov!)
  • Aumentar o tempo entre as repetições do URL de teste (#11015)
  • Atualize os testes para descrever com precisão as ações de teste. (#10928) (Obrigado @romero126!)
  • Ignorar temporariamente o teste escamoso TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
  • Tornar o teste de fuga do processador de eventos estável (#10790)
  • Sincronizar a capitalização no YAML de CI (#10767) (Obrigado @RDIL!)
  • Adicionar teste para a correção de fuga do processador de eventos (#10768)
  • Adicionar Get-ChildItem teste (#10507) (Obrigado) @iSazonov!)
  • Substitua o idioma ambíguo para testes do parâmetro para a precisão (#10666) (Obrigado) @romero126!)
  • Adicionar verificação experimental a ForEach-Object -Testes paralelos (#10354) (Obrigado) @KirkMunro!)
  • Testes de atualização para validação alpine (#10428)

Melhorias na Compilação e no Pacote

  • Corrigir a assinatura de pacotes Nuget para compilação de Pacotes Coordenados (#11316)
  • Atualizar dependências de Galeria do PowerShell e NuGet (#11323)
  • Aumentar o Microsoft.ApplicationInsights de 2.11.0 para 2.12.0 (#11305)
  • Aumentar Microsoft.CodeAnalysis.CSharp de 3.3.1 para 3.4.0 (#11265)
  • Atualizações pacotes para Debian 10 e 11 (#11236)
  • Ativar apenas as funcionalidades experimentais antes do RC (#11162)
  • Atualizar a versão mínima do macOS (#11163)
  • Bump NJsonSchema de 10.0.27 para 10.0.28 (#11170)
  • Atualizar ligações em README.md e metadata.json para Pré-visualização.5 (#10854)
  • Selecione os ficheiros para testes de conformidade que pertencem ao PowerShell (#10837)
  • Permitir a compilação do pacote msix win7x86. (Interno 10515)
  • Permitir que as versões semânticas sejam transmitidas para a função NormalizeVersion (#11087)
  • Aumente o .NET Core Framework para 3.1-preview.3 (#11079)
  • Aumentar o PSReadLine de 2.0.0-beta5 para 2.0.0-beta6 em /src/Modules (#11078)
  • Bump Newtonsoft.Json de 12.0.2 a 12.0.3 (#11037) (#11038)
  • Adicionar pacotes Debian 10, 11 e CentOS 8 (#11028)
  • Carregar Build-Info ficheiro Json com o campo ReleaseDate (#10986)
  • Aumente o .NET Core Framework para 3.1-preview.2 (#10993)
  • Ativar a compilação do pacote MSIX x86 (#10934)
  • Atualizar o URL do script de instalação do SDK dotnet em build.psm1 (#10927)
  • Bump Markdig.Signed de 0.17.1 a 0.18.0 (#10887)
  • Bump ThreadJob de 2.0.1 a 2.0.2 (#10886)
  • Atualizar o módulo De Manifesto e Empacotamento do AppX para cumprir os requisitos da Ms Store (#10878)
  • Referência do pacote de atualização do SDK do PowerShell para pré-visualização.5 (Interno 10295)
  • Atualizar ThirdPartyNotices.txt (#10834)
  • Aumente Microsoft.PowerShell.Native para 7.0.0-preview.3 (#10826)
  • Aumentar o Microsoft.ApplicationInsights de 2.10.0 para 2.11.0 (#10608)
  • Bump NJsonSchema de 10.0.24 para 10.0.27 (#10756)
  • Adicionar suporte do MacPorts ao sistema de compilação (#10736) (Obrigado) @Lucius-Q-User!)
  • Bump PackageManagement de 1.4.4 a 1.4.5 (#10728)
  • Bump NJsonSchema de 10.0.23 para 10.0.24 (#10635)
  • Adicionar variável de ambiente para diferenciar a telemetria cliente/servidor no MSI (#10612)
  • Bump PSDesiredStateConfiguration de 2.0.3 para 2.0.4 (#10603)
  • Aumentar Microsoft.CodeAnalysis.CSharp de 3.2.1 para 3.3.1 (#10607)
  • Atualizar para .Net Core 3.0 RTM (#10604) (Obrigado @bergmeister!)
  • Atualizar o empacotamento MSIX para que a versão para os requisitos da Loja Windows (#10588)
  • Aumentar a versão do PowerShellGet de 2.2 para 2.2.1 (#10382)
  • Bump PackageManagement versão de 1.4.3 para 1.4.4 (#10383)
  • Atualizar README.md e metadata.json para 7.0.0-preview.4 (Interno 10011)
  • Atualizar a versão do .Net Core 3.0 da Pré-visualização 9 para a RC1 (#10552) (Obrigado @bergmeister!)
  • Corrigir a geração de listas ExperimentalFeature (Interno 9996)
  • Aumentar a versão do PSReadLine de 2.0.0-beta4 para 2.0.0-beta5 (#10536)
  • Corrigir o script de compilação de versão para definir a etiqueta de versão
  • Atualizar a versão do Microsoft.PowerShell.Native para 7.0.0-preview.2 (#10519)
  • Atualizar para Netcoreapp3.0 preview9 (#10484) (Obrigado @bergmeister!)
  • Certifique-se de que a compilação coordenada diária sabe que é uma compilação diária (#10464)
  • Atualizar a compilação do pacote combinado para lançar as compilações diárias (#10449)
  • Remover referência do fornecedor (#10445) (Obrigado) @RDIL!)
  • Bump NJsonSchema versão de 10.0.22 para 10.0.23 (#10421)
  • Remova a eliminação da pasta de compilação linux-x64 porque algumas dependências da Alpine precisam dela (#10407)

Documentação e Conteúdo da Ajuda

  • Refatorizar registos de alterações num único registo por versão (#11165)
  • Corrigir FWLinks para documentos de ajuda online do PowerShell 7 (#11071)
  • Atualizar CONTRIBUTING.md (#11096) (Obrigado @mklement0!)
  • Corrigir ligações de documentos de instalação no README.md (#11083)
  • Adiciona exemplos a install-powershell.ps1 script (#11024) (Obrigado) @kilasuit!)
  • Correção para Select-String ênfase e Import-DscResource no CHANGELOG.md (#10890)
  • Remover a ligação obsoleto do powershell-beginners-guide.md (#10926)
  • Intercalar registos de alterações estáveis e de manutenção (#10527)
  • Atualização da versão do .NET utilizada nos documentos de compilação (#10775) (Obrigado) @Greg-Smulko!)
  • Substituir ligações do MSDN para o Microsoft Learn no powershell-beginners-guide.md (#10778) (Obrigado) @iSazonov!)
  • Corrigir a ligação de descrição geral do DSC quebrada (#10702)
  • Atualizar Support_Question.md para ligar ao Stack Overflow como outro recurso da comunidade (#10638) (Obrigado) @mklement0!)
  • Adicionar arquitetura de processador ao modelo de pedido de distribuição (#10661)
  • Adicionar novo livro moL do PowerShell à aprendizagem de documentos do PowerShell (#10602)
  • Atualizar README.md e metadados para versões v6.1.6 e v6.2.3 (#10523)
  • Corrigir um erro de digitação no README.md (#10465) (Obrigado) @vedhasp!)
  • Adicionar uma referência ao módulo PSKoans à documentação dos Recursos de Aprendizagem (#10369) (Obrigado) @vexx32!)
  • Atualizar README.md e metadata.json para 7.0.0-preview.3 (#10393)