O que há de novo no PowerShell 7.2

O PowerShell 7.2 é a próxima versão do Serviço de Longo Prazo (LTS) criado no .NET 6.0.

O PowerShell 7.2 inclui os seguintes recursos, atualizações e alterações de quebra.

  • Novos pacotes de instalação universal para a maioria das distribuições Linux suportadas
  • Suporte do Microsoft Update no Windows
  • 2 novas características experimentais
    • Argumento de comando nativo melhorado passando suporte
    • Suporte a cores ANSI FileInfo
  • Preenchimento de guias aprimorado
  • PSReadLine 2.1 com IntelliSense Preditivo
  • 7 recursos experimentais promovidos ao mainstream e 1 removido
  • Separar o DSC do PowerShell 7 para permitir melhorias futuras
  • Várias mudanças significativas para melhorar a usabilidade

Para obter uma lista completa das alterações, consulte o Log de alterações no repositório GitHub.

Atualizações de instalação

Verifique as instruções de instalação para o seu sistema operativo preferido:

Além disso, o PowerShell 7.2 suporta versões ARM64 do Windows e macOS e versões ARM32 e ARM64 do Debian e Ubuntu.

Para obter informações atualizadas sobre os sistemas operacionais suportados e o ciclo de vida do suporte, consulte o Ciclo de vida de suporte do PowerShell.

Novos pacotes de instalação universal para distribuições Linux

Anteriormente, criamos pacotes de instalação separados para cada versão suportada do CentOS, RHEL, Debian e Ubuntu. O pacote de instalação universal combina oito pacotes diferentes em um, tornando a instalação no Linux mais simples. O pacote universal instala as dependências necessárias para a distribuição de destino e cria as alterações específicas da plataforma para fazer o PowerShell funcionar.

Suporte do Microsoft Update para Windows

PowerShell 7.2 adicionar suporte para o Microsoft Update. Ao habilitar esse recurso, você obterá as atualizações mais recentes do PowerShell 7 em seu fluxo de gerenciamento tradicional do Windows Update (WU), seja com o Windows Update for Business, WSUS, SCCM ou a caixa de diálogo WU interativa em Configurações.

O pacote MSI do PowerShell 7.2 inclui as seguintes opções de linha de comando:

  • USE_MU - Esta propriedade tem dois valores possíveis:
    • 1 (padrão) - Opta pela atualização por meio do Microsoft Update ou do WSUS
    • 0 - não opte por atualizar através do Microsoft Update ou WSUS
  • ENABLE_MU
    • 1 (padrão) - Opta por usar o Microsoft Update, as Atualizações Automáticas ou o Windows Update
    • 0 - não opte por usar o Microsoft Update, as Atualizações Automáticas ou o Windows Update

Características experimentais

Os seguintes recursos experimentais agora são recursos principais nesta versão:

  • Microsoft.PowerShell.Utility.PSImportPSDataFileSkipLimitCheck - consulte Import-PowerShellDataFile
  • Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace
  • PSAnsiRendering - veja about_ANSI_Terminals
  • PSAnsiProgress - veja about_ANSI_Terminals
  • PSCultureInvariantReplaceOperator
  • PSNotApplyErrorActionToStderr
  • PSUnixFileStat

O seguinte recurso experimental foi adicionado nesta versão:

  • PSNativeCommandArgumentPassing - Quando esse recurso experimental está habilitado, o PowerShell usa a propriedade ArgumentList do objeto StartProcessInfo, em vez de nosso mecanismo atual de reconstruir uma cadeia de caracteres ao invocar um executável nativo. Esse recurso adiciona uma nova variável $PSNativeCommandArgumentPassing automática que permite selecionar o comportamento em tempo de execução.

  • PSAnsiRenderingFileInfo - Permite a personalização de cores ANSI das informações do arquivo.

  • PSLoadAssemblyFromNativeCode - Expõe uma API para permitir o carregamento de assembly a partir de código nativo.

Para obter mais informações sobre os recursos experimentais, consulte Usando recursos experimentais.

Preenchimento de guias aprimorado

O PowerShell 7.2 inclui vários aprimoramentos para Conclusão de Guias. Essas alterações incluem correções de bugs e melhoram a usabilidade.

  • Corrigir o preenchimento da guia para tópicos sobre* não localizados (#15265) (Obrigado @MartinGC94)
  • Corrigir splatting sendo tratado como parâmetro posicional em finalizações (#14623) (Obrigado @MartinGC94)
  • Adicionar conclusões para palavras-chave de ajuda baseadas em comentários (#15337) (Obrigado @MartinGC94)
  • Adicionar conclusão para as instruções Requires (#14596) (Obrigado @MartinGC94)
  • Adicionado preenchimento da guia para o parâmetro View dos cmdlets Format-* (#14513) (Obrigado @iSazonov)

PSReadLine 2.1 IntelliSense Preditivo

O PSReadLine 2.1 introduziu APIs que estabelecem CommandPrediction uma estrutura para fornecer previsões para a conclusão da linha de comando. A API permite que os usuários descubram, editem e executem comandos completos com base em previsões correspondentes do histórico do usuário.

O IntelliSense preditivo está desativado por padrão. Para habilitar previsões, execute o seguinte comando:

Set-PSReadLineOption -PredictionSource History

Separar o DSC do PowerShell 7 para permitir melhorias futuras

O módulo PSDesiredStateConfiguration foi removido do pacote do PowerShell 7.2 e agora está publicado na Galeria do PowerShell. Isso permite que o módulo PSDesiredStateConfiguration seja desenvolvido independentemente do PowerShell e os usuários possam misturar e combinar versões do PowerShell e PSDesiredStateConfiguration para seu ambiente. Para instalar o PSDesiredStateConfiguration 2.0.5 a partir da Galeria do PowerShell:

Install-Module -Name PSDesiredStateConfiguration -Repository PSGallery -MaximumVersion 2.99

Importante

Certifique-se de incluir o parâmetro MaximumVersion ou você pode instalar a versão 3 (ou superior) do PSDesireStateConfiguration que contém diferenças significativas.

Atualizações do mecanismo

  • Adicionar LoadAssemblyFromNativeMemory função para carregar assemblies na memória de um host nativo do PowerShell por awakecoding · Pull Request #14652

Mudanças e melhorias significativas

  • O PSDesiredStateConfiguration foi removido do pacote do PowerShell 7.2
  • Tornar os pacotes deb e RPM do PowerShell Linux universais (#15109)
  • Recurso PSNativeCommandArgumentPassingexperimental : Use ArgumentList para invocação executável nativa (#14692)
  • Verifique se -PipelineVariable está definido para todas as saídas de cmdlets de script (#12766)
  • Emitir aviso se ConvertTo-Json exceder o valor -Depth (#13692)
  • Remover o alias D da opção -Directory CL-General #15171
  • Melhorar a deteção de tipos de valores mutáveis (#12495)
  • Restringir New-Object no modo NoLanguage sob bloqueio (#14140)
  • Impor a configuração de Negação do AppLocker antes da configuração de Bypass da Política de Execução (#15035)
  • Alterar FileSystemInfo.Target de um CodeProperty para um AliasProperty que aponta para FileSystemInfo.LinkTarget (#16165)