Partilhar via


O que há de novo no PowerShell 7.4

O PowerShell 7.4.7 inclui os seguintes recursos, atualizações e alterações de quebra. O PowerShell 7.4.7 é baseado no .NET 8.0.12.

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

Mudanças significativas

  • As imagens do docker do servidor Nano não estão disponíveis para esta versão
  • Adicionado o parâmetro ProgressAction aos parâmetros comuns
  • Atualize algumas APIs do PowerShell para lançar ArgumentException em vez de ArgumentNullException quando o argumento for uma cadeia de caracteres vazia (#19215) (Obrigado @xtqqczze!)
  • Remover código relacionado com #requires -pssnapin (#19320)
  • Test-Json agora usa JsonSchema.NET em vez de Newtonsoft.Json.Schema.
    • Com essa alteração, Test-Json não suporta mais os esquemas mais antigos do Draft 4. (#18141) (Obrigado @gregsdennis!). Para obter mais informações sobre esquemas JSON, consulte documentação do de esquema JSON. Isso também quebra Test-Json para arquivos JSON e JSONC com comentários.
    • ConvertFrom-Json suporte ainda usa Newtonsoft.Json.Schema para que possa converter arquivos JSON com comentários.
  • A saída do Test-Connection agora inclui informações mais detalhadas sobre testes de conexão TCP
  • O .NET introduziu alterações que afetaram Test-Connection. O cmdlet agora retorna um erro sobre a necessidade de usar sudo em plataformas Linux ao usar um tamanho de buffer personalizado (#20369)
  • O recurso experimental PSNativeCommandPreserveBytePipe agora é mainstream. O PowerShell agora preserva os dados de fluxo de bytes ao redirecionar o fluxo de stdout de um comando nativo para um ficheiro ou ao encaminhar dados de fluxo de bytes para o fluxo stdin de um comando nativo.
  • Alterar a forma como os caminhos relativos em são tratados ao usar o parâmetro RelativeBasePath (#19755) (Obrigado
  • Remover código PSv2 não utilizado - remove a função TabExpansion (#18337)

Atualizações do instalador

O pacote MSI do Windows agora fornece uma opção para desabilitar a telemetria do PowerShell durante a instalação. Para obter mais informações, consulte Instalar o pacote msi a partir da linha de comando.

Versões atualizadas do PSResourceGet e PSReadLine

O PowerShell 7.4 inclui Microsoft.PowerShell.PSResourceGet v1.0.1. Este módulo é instalado lado a lado com o PowerShellGet v2.2.5 e o PackageManagement v1.4.8.1. Para obter mais informações, consulte a documentação do Microsoft.PowerShell.PSResourceGet.

O PowerShell 7.4 agora inclui PSReadLine v2.3.4. Para obter mais informações, consulte a documentação do PSReadLine.

Melhorias na autocompletação por tabulação

Muito obrigado a @MartinGC94 e a outros por todo o vosso trabalho em melhorar a funcionalidade de autocompletar.

  • Corrigir problema ao concluir o primeiro comando em um script com uma expressão de matriz vazia (#18355)
  • Corrigir conclusão de argumento posicional (#17796)
  • Priorize o conjunto de parâmetros padrão ao concluir argumentos posicionais (#18755)
  • Melhorar a pseudo-ligação para parâmetros dinâmicos (#18030)
  • Melhorar a inferência de tipo de chaves de tabela hash (#17907)
  • Corrigir erro de inferência de tipo para instruções de retorno vazias (#18351)
  • Melhorar a inferência de tipo para Get-Random (#18972)
  • Corrigir inferência de tipo para todas as variáveis de escopo (#18758)
  • Melhorar a enumeração de tipos inferidos no pipeline (#17799)
  • Adicione conclusão para valores em comparações ao comparar Enums (#17654)
  • Adicionar conclusão de atribuição de propriedade para enums (#19178)
  • Correção de conclusão para propriedades da variável PSCustomObject (#18682)
  • Corrigir conclusão de membro no argumento de atributo (#17902)
  • Excluir aliases de parâmetros redundantes dos resultados de conclusão (#19382)
  • Corrigir conclusão de membro de classe para classes com tipos base (#19179)
  • Adicionar conclusão utilizando palavras-chave (#16514)
  • Corrigir vazamento de variável TabExpansion2 ao completar variáveis (#18763)
  • Habilitar a conclusão de variáveis nos escopos do ScriptBlock (#19819)
  • Corrigir o preenchimento da variável da instrução foreach (#19814)
  • Corrigir a precedência na inferência do tipo de variável (#18691)
  • Corrigir conclusão de membro para a classe Enum do PowerShell (#19740)
  • Corrigir a análise de literais de matriz em expressões de índice em chamadas de método (#19224)
  • Melhorar a conclusão do caminho (#19489)
  • Corrigir um erro de indexação fora do limite em CompleteInput para entrada de script vazia (#19501)
  • Melhorar o desempenho de conclusão variável (#19595)
  • Melhorar o preenchimento de chaves Hashtable para atribuições de variáveis com restrição de tipo, tablas hash aninhadas e muito mais (#17660)
  • Inferir saída de aplicativo externo como strings (#19193)
  • Atualizar a conclusão dos parâmetros para enums, de modo a excluir valores não permitidos pelos atributos ValidateRange (#17750) (Obrigado @fflaten!).
  • Corrigir conclusão de parâmetros dinâmicos (#19510)
  • Adicionar conclusão para variáveis atribuídas pela instrução Data (#19831)
  • Corrija o til de expansão (~) em sistemas Windows para $home para evitar a quebra de casos de uso com comandos nativos (#21529)

Melhorias no cmdlet da Web

Agradecemos muito a @CarloToso e outros por todo o trabalho na melhoria dos cmdlets da web.

  • Corrigir descompactação em cmdlets web para incluir suporte a Brotli (#17955) (Obrigado @iSazonov!))
  • Webcmdlets adicionam 308 para redirecionar códigos e pequenas limpezas (#18536)
  • Conclua a renderização da barra de progresso em Invoke-WebRequest quando o download for concluído ou cancelado (#18130)
  • Os cmdlets da Web obtêm intervalo de Retry-After dos cabeçalhos de resposta se o código de status for 429 (#18717)
  • Os cmdlets da Web definem a codificação de conjunto de caracteres padrão como UTF8 (#18219)
  • Manter WebSession.MaximumRedirection sem alterações (#19190)
  • Os WebCmdlets analisam a declaração XML para obter o valor de codificação, se presente. (#18748)
  • Correção usando -Body xml em webcmdlets sem uma codificação (#19281)
  • Ajuste o comportamento do método PUT para que funcione como POST para o tipo de conteúdo padrão nos WebCmdlets (#19152)
  • Leve em consideração o tipo de conteúdo dos cabeçalhos em WebCmdlets (#19227)
  • Permitir a preservação do método HTTP original ao adicionar -PreserveHttpMethodOnRedirect aos cmdlets da Web (#18894)
  • Webcmdlets exibem um erro no redirecionamento https para http (#18595)
  • Adicionar AllowInsecureRedirect alternar para cmdlets da Web (#18546)
  • Melhorar a mensagem detalhada nos cmdlets da web quando o comprimento do conteúdo é desconhecido (#19252)
  • Crie o URI relativo para links da resposta em Invoke-WebRequest (#19092)
  • Corrigir redirecionamento para -CustomMethod POST em WebCmdlets (#19111)
  • Eliminar a resposta anterior em Webcmdlets (#19117)
  • Melhorar Invoke-WebRequest formato de erros xml e json (#18837)
  • Adicionar ValidateNotNullOrEmpty aos parâmetros de OutFile e InFile de WebCmdlets (#19044)
  • Lista de cabeçalhos de atualização HttpKnownHeaderNames (#18947)
  • Invoke-RestMethod -FollowRelLink corrigir links contendo vírgulas (#18829)
  • Corrigir bug com a gestão de redirecionamento e KeepAuthorization em cmdlets Web (#18902)
  • Adicionar StatusCode ao HttpResponseException (#18842)
  • Suportar conexões persistentes HTTP em cmdlets da Web (#19249) (Obrigado @stevenebutler!)
  • Pequena limpeza Invoke-RestMethod (#19490)
  • Melhorar a mensagem detalhada dos WebCmdlets para mostrar a versão HTTP correta (#19616)
  • Adicionar FileNameStar ao MultipartFileContent em WebCmdlets (#19467)
  • Corrija o status HTTP de 409 para 429 para os WebCmdlets de modo a obter o intervalo de repetição a partir do cabeçalho Retry-After. (#19622) (Obrigado @mkht!)
  • Alterar -TimeoutSec para -ConnectionTimeoutSeconds e adicionar -OperationTimeoutSeconds aos cmdlets da Web (#19558) (Obrigado ao @stevenebutler!) por outros cmdlets)
  • Suporte Ctrl+c quando a conexão trava durante a leitura de dados em WebCmdlets (#19330) (Obrigado @stevenebutler!)
  • Suporte a soquete de domínio Unix em WebCmdlets (#19343)

Outras melhorias no cmdlet

  • Test-Connection agora retorna erro sobre a necessidade de usar sudo em plataformas Linux ao usar um tamanho de buffer personalizado (#20369)
  • Adicionar tipos de saída aos comandos Formatar (#18746) (Obrigado @MartinGC94!)
  • Adicionar atributos de tipo de saída para Get-WinEvent (#17948) (Obrigado @MartinGC94!)
  • Adicionar os parâmetros Path e LiteralPath ao cmdlet Test-Json (#19042) (Obrigado @ArmaanMcleod!))
  • Adicionar o parâmetro NoHeader aos cmdlets ConvertTo-Csv e Export-Csv (#19108) (Obrigado @ArmaanMcleod!)
  • Adicionar os parâmetros Confirm e WhatIf a Stop-Transcript(#18731) (Obrigado @JohnLBevan!)
  • Adicionar parâmetro FuzzyMinimumDistance ao Get-Command (#18261)
  • Tornar o parâmetro Encoding capaz de aceitar a codificação ANSI no PowerShell (#19298) (Obrigado @CarloToso!))
  • Adicionar progresso ao Copy-Item (#18735)
  • Update-Help agora relata um erro ao usar a cultura implícita em sistemas fora dos EUA. (#17780) (Obrigado @dkaszews!)
  • Não exija atividade ao criar um registo de progresso concluído (#18474) (Obrigado @MartinGC94!)
  • Impedir valores negativos nos parâmetros -Head e -Tail do cmdlet Get-Content (#19715) (Obrigado @CarloToso!)
  • Certifique-se de que Update-Help lance o erro adequado quando a cultura atual não esteja associada a um idioma (#19765) (Obrigado @josea!))
  • Permita a combinação de parâmetros -Skip e -SkipLast em Select-Object cmdlet. (#18849) (Obrigado @ArmaanMcleod!)
  • Adicionar Get-SecureRandom cmdlet (#19587)
  • Set-Clipboard -AsOSC52 para uso remoto (#18222) (Obrigado @dkaszews!)
  • Acelerar a resolução do caminho relativo Resolve-Path (#19171) (Obrigado @MartinGC94!))
  • Adicionado o parâmetro switch -CaseInsensitive aos cmdlets Select-Object e Get-Unique (#19683) (Obrigado @ArmaanMcleod!)
  • Restart-Computer e Stop-Computer devem falhar com erro quando não estiver rodando via sudo no Unix (#19824)

Melhorias no motor

Atualizações para $PSStyle

  • Adiciona as propriedades Dim e DimOff (#18653)
  • Adicionados métodos estáticos à classe PSStyle que mapeiam valores de de em primeiro plano e plano de fundo para sequências de escape ANSI (#17938)
  • Os cabeçalhos de tabela para campos calculados são formatados em itálico por padrão
  • Adicione suporte para respeitar $PSStyle.OutputRendering no host remoto (#19601)
  • Dados de telemetria atualizados para incluir o uso de módulos CrescendoBuilt (#20371)

Outras atualizações do motor

  • Tornar a classe PowerShell não afiliada ao Runspace ao declarar o atributo NoRunspaceAffinity (#18138)
  • Adicione o atributo ValidateNotNullOrWhiteSpace (#17191) (Obrigado @wmentha!)
  • Adicionar sqlcmd à lista para passagem de argumentos herdados (#18559)
  • Adicione a função cd~ (#18308) (Obrigado @GigaScratch!)
  • Corrigir a análise do tipo de matriz em tipos genéricos (#19205) (Obrigado @MartinGC94!))
  • Corrigir a correspondência de caracteres universais na raiz dos caminhos dos dispositivos (#19442) (Obrigado @MartinGC94!))
  • Adicione uma API pública para obter locais de elementos PSModulePath (#19422)
  • ** Fix incorrect string to type conversion (#19560) (Obrigado @MartinGC94!)
  • Corrigir execução lenta quando muitos pontos de interrupção são usados (#14953) (Obrigado @nohwnd!)
  • Remover código relacionado com #requires -pssnapin (#19320)

Características experimentais

O PowerShell 7.4 apresenta os seguintes recursos experimentais:

  • PSFeedbackProvider - Substitui a estrutura de sugestões codificada por um provedor de feedback extensível.
    • Esse recurso também adiciona as propriedades FeedbackName, FeedbackTexte FeedbackAction a $PSStyle.Formatting que permitem alterar a formatação das mensagens de feedback.
  • PSModuleAutoLoadSkipOfflineFiles - A descoberta de módulos agora ignora arquivos marcados por provedores de nuvem como não completamente presentes no disco.
  • PSCommandWithArgs - Adicionar suporte para passar argumentos para comandos como uma única cadeia de caracteres

As seguintes características experimentais tornaram-se comuns:

O PowerShell 7.4 alterou os seguintes recursos experimentais:

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