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 do pipeline com
ForEach-Object -Parallel
- Novos operadores:
- Operador Ternary:
a ? b : c
- Operadores da cadeia de pipelines:
||
e&&
- Operadores condicionais nulos:
??
e??=
- Operador Ternary:
- Uma vista de erro simplificada e dinâmica e
Get-Error
um cmdlet 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 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?
O PowerShell 7 suporta atualmente 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 sabores 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 remoagem winRM. Para obter detalhes sobre como configurar a comunicação remota baseada em SSH, veja PowerShell Remoting over SSH (Remoting over 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 instalação 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 com retrocompatibilidade melhorada com Windows PowerShell
O PowerShell 7.0 marca uma mudança para .NET Core 3.1, permitindo uma compatibilidade significativamente mais atrasada com módulos de Windows PowerShell existentes. Isto inclui muitos módulos no Windows que requerem funcionalidades gui como Out-GridView
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 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 o 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 do Módulo.
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 Paralelo .
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 de 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 script 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 expressão de condição é sempre avaliada e o 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, o Caminho existe é apresentado. 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 E e OU 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 operador de ??
agrupamento nulo, atribuição ??=
condicional nula e operadores ?.
de acesso condicional nulo e ?[]
.
Operador de agrupamento nulo??
O operador ??
de agrupamento nulo devolve o valor do seu operando esquerdo se não for nulo.
Caso contrário, avalia o operando direito e devolve o resultado. O ??
operador não avalia o operando direito se o operando esquerdo for avaliado como não nulo.
$x = $null
$x ?? 100
100
No exemplo seguinte, o operando do lado 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 nulo atribui o valor do seu operando direito ao seu operando esquerdo apenas se o operando esquerdo for avaliado como nulo. O ??=
operador não avalia o operando direito se o operando esquerdo for avaliado como não nulo.
$x = $null
$x ??= 100
$x
100
No exemplo seguinte, o operando do lado direito 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 $ErrorView
de 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 $ErrorView
de 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.
O Get-Error
cmdlet suporta a entrada do pipeline com a variável $Error
incorporada .
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 Tarefa (#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!)
- Corrija o runtime do comando para que StopUpstreamCommandsException não seja preenchido em -ErrorVariable (#10840)
- Defina a codificação de saída como [Consola]::OutputEncoding para comandos nativos (#10824)
- Suporte de blocos de código de várias linhas em exemplos (#10776) (Obrigado @Greg-Smulko!)
- Adicionar parâmetro Culture ao cmdlet Select-String (#10943) (Obrigado) @iSazonov!)
- Corrigir Start-Job caminho do diretório de trabalho com barra invertida à direita (#11041)
- ConvertFrom-Json: Desembrulhar coleções por predefinição (#10861) (Obrigado) @danstur!)
- Utilize hashtable sensível a maiúsculas e minúsculas para Group-Object cmdlet com comutadores -CaseSensitive e -AsHashtable (#11030) (Obrigado @vexx32!)
- Processe a exceção se a enumeração de ficheiros falhar ao reconstruir o caminho para ter a caixa correta (#11014)
- Corrigir ConciseView para mostrar Atividade em vez de myCommand (#11007)
- Permitir que os cmdlets Web ignorem os estados de erro HTTP (#10466) (Obrigado) @vdamewood!)
- Corrigir o piping de mais do que 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 retos do endereço ipv6 para comunicação remota SSH (#10968)
- Corrigir falha se o comando enviado para pwsh for apenas espaço em branco (#10977)
- Foram adicionados Get-Clipboard e Set-Clipboard multiplataforma (#10340)
- Correção da definição do caminho original do objeto 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 espaço em branco (#10951)
- Devolver o valor predefinido ao obter um valor nulo para uma definição no PSConfiguration.cs (#10963) (Obrigado) @iSazonov!)
- Processar a exceção de E/S como não terminando (#10950)
- Adicione a assemblagem GraphicalHost para ativar Out-GridView, Show-Command e Get-Help -ShowWindow (#10899)
- Take ComputerName via pipeline in Get-HotFix (#10852) (Obrigado) @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 é devolvida alguma entrada de ficheiro de sistema 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 as 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 deve ter a sequência de escape do VT na saída (#10814) - Adicione o 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!)
- Melhore o processamento de entradas em piped de coleção mista e fluxos de entrada canalizados 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 novamente negado no Get-WinEvent (#10639) (Obrigado) @iSazonov!)
- Ativar a conclusão do separador para atribuição de variáveis que seja restrita por enumeração ou tipo (#10646)
- Remover a propriedade remoting SourceLength não utilizada que está a causar problemas de formatação (#10765)
- Adicionar parâmetro -Delimitador ao ConvertFrom-StringData (#10665) (Obrigado) @steviecoaster!)
- Adicionar o parâmetro posicional para ScriptBlock ao utilizar Invoke-Command com SSH (#10721) (Obrigado) @machgo!)
- Mostrar informações de contexto de linha se existirem múltiplas linhas, mas sem 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 chamada. (#10672)
- Substitua api-ms-win-core-file-l1-2-2.dll por Kernell32.dll para as APIs FindFirstStreamW e FindNextStreamW (#10680) (Obrigado) @iSazonov!)
- Otimizar o script de formatação de ajuda para ser mais tolerante a StrictMode (#10563)
- Adicionar o parâmetro -SecurityDescriptorSDDL ao New-Service (#10483) (Obrigado) @kvprasoon!)
- Remover a saída informativa, 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!)
- Direcionar Clear-Host saída para o terminal (#10681) (Obrigado) @iSazonov!)
- Adicionar nova linha para agrupamento com Format-Table e -Property (#10653)
- Remova [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 não 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 XTPUSHSGR/XTPOPSGR VT utilizadas em cenários de composabilidade. (#10208)
- Adicionar o parâmetro WorkingDirectory ao 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 incorretamente para o depurador do espaço 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 incorporado com o PowerShell para 7.0.0.0 (#10356)
- Adicionar um erro no Add-Type se já existir um tipo com o mesmo nome (#9609) (Obrigado @iSazonov!)
Desempenho
- Evite utilizar o encerramento no Parser.SaveError (#11006)
- Melhorar a colocação em cache ao criar novas instâncias do Regex (#10657) (Obrigado) @iSazonov!)
- Melhorar o processamento dos dados do tipo incorporado do PowerShell 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 espaço de execução (#10569) (Obrigado @iSazonov!)
- Torne ForEach-Object mais rápido para os cenários mais utilizados (#10454) e corrija ForEach-Object -Problema de desempenho paralelo em muitas áreas de execução (#10455)
Limpeza do Código
- Alterar o texto do comentário e do elemento para cumprir as normas da Microsoft (#11304)
- Problemas de estilo de limpeza no Compiler.cs (#10368) (Obrigado @iSazonov!)
- Remover o conversor de tipo não utilizado para CommaDelimitedStringCollection (#11000) (Obrigado @iSazonov!)
- Estilo de limpeza no 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 do 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ções de atualização para compilações diárias (#10903) (Obrigado @bergmeister!)
- Restabelecer a API de depuração perdida em #10338 (#10808)
- Remova a referência WorkflowJobSourceAdapter que já não é utilizada (#10326) (Obrigado @KirkMunro!)
- Limpar interfaces COM no código jump list ao corrigir atributos PreserveSig (#9899) (Obrigado) @weltkante!)
- Adicione um comentário que descreva o motivo pelo qual -ia não é o alias para o parâmetro comum -InformationAction (#10703) (Obrigado) @KirkMunro!)
- Mudar 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 no 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 um 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)