Compartilhar via


Novidades no PowerShell 7.4

O PowerShell 7.4.7 inclui os seguintes recursos, atualizações e alterações significativas. O PowerShell 7.4.7 é criado no .NET 8.0.12.

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

Alterações da falha

  • As imagens do docker do nano server 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 a #requires -pssnapin (#19320)
  • Test-Json agora usa JsonSchema.NET em vez de Newtonsoft.Json.Schema.
    • Com essa alteração, Test-Json não dá mais suporte aos esquemas mais antigos do Draft 4. (nº 18141) (Obrigado @gregsdennis!). Para obter mais informações sobre esquemas JSON, consulte a documentação Esquema JSON. Isso também interrompe Test-Json para arquivos JSON e JSONC com comentários.
    • O suporte ConvertFrom-Json ainda usa Newtonsoft.Json.Schema para poder converter arquivos JSON com comentários.
  • A saída de 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 (nº 20369)
  • O recurso experimental PSNativeCommandPreserveBytePipe agora é mainstream. O PowerShell já preserva os dados de fluxo de bytes ao redirecionar o fluxo stdout de um comando nativo para um arquivo ou ao direcionar dados de fluxo de bytes para o fluxo stdin de um comando nativo.
  • Alterar como os caminhos relativos no Resolve-Path são tratados ao usar o parâmetro RelativeBasePath (#19755) (Obrigado @MartinGC94!))
  • 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 de PSResourceGet e PSReadLine

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

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

Aprimoramentos de conclusão da guia

Muito obrigado a @MartinGC94 e outros por todo o seu trabalho para melhorar a conclusão da guia.

  • Corrigir problema ao concluir o primeiro comando em um script com uma expressão de matriz vazia (nº 18355)
  • Corrigir a conclusão do argumento posicional (#17796)
  • Priorizar o conjunto de parâmetros padrão ao concluir argumentos posicionais (nº 18755)
  • Aprimorar a vinculação pseudodinâmica para parâmetros dinâmicos (#18030)
  • Aprimorar a inferência de tipos 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)
  • Adição de preenchimento de valores em comparações ao comparar enumerações (nº 17654)
  • Adição do preenchimento da atribuição de propriedade para enumerações (nº 19178)
  • Correção do preenchimento das propriedades da variável PSCustomObject (nº 18682)
  • Correção da conclusão do membro no argumento de atributo (nº 17902)
  • Exclusão de aliases de parâmetro redundantes dos resultados de conclusão (#19382)
  • Correção do preenchimento de membro de classe para classes com tipos base (nº 19179)
  • Adicionar complemento para o uso de palavras-chave (#16514)
  • Correção do vazamento de variável TabExpansion2 ao concluir variáveis (#18763)
  • Habilitação da conclusão de variáveis entre escopos do ScriptBlock (#19819)
  • Correção da conclusão da variável de instrução foreach (#19814)
  • Correção da precedência de inferência de tipo de variável (#18691)
  • Correção da conclusão do membro para a classe Enum do PowerShell (#19740)
  • Correção da análise de literais de matriz em expressões de índice em chamadas de método (#19224)
  • Aperfeiçoamento da conclusão do caminho (#19489)
  • Correção de um erro de indexação fora do limite em CompleteInput para entrada de script vazia (#19501)
  • Aperfeiçoamento do desempenho de conclusão variável (#19595)
  • Aperfeiçoamento da conclusão da chave hashable para atribuições de variáveis restritas de tipo, Hashtables aninhados e muito mais (#17660)
  • Inferência da saída de aplicativo externo como cadeias de caracteres (#19193)
  • Atualização da conclusão do parâmetro para enumerações excluírem valores não permitidos por atributos ValidateRange (#17750) (Nossos agradecimentos, @fflaten!).
  • Corrigir o preenchimento do parâmetro dinâmico (#19510)
  • Adicionar conclusão para variáveis atribuídas pela instrução Data (#19831)
  • Correção da expansão do til (~) em sistemas Windows para $home para evitar a quebra de casos de uso com comandos nativos (#21529)

Melhorias no cmdlet da Web

Muito obrigado a @CarloToso e outros por todo o trabalho na melhoria de Web Cmdlets.

  • Corrigir descompactação em cmdlets da Web para incluir Brotli (#17955) (Obrigado, @iSazonov!)
  • Webcmdlets adicionam 308 para redirecionar códigos e limpezas pequenas (#18536)
  • Conclua a renderização da barra de progresso em Invoke-WebRequest quando o download estiver completo ou cancelado (#18130)
  • Os cmdlets Web tinha o intervalo Retry-After dos cabeçalhos de resposta se o código de status era 429 (nº 18717)
  • Os cmdlets Web definam a codificação de conjunto de caracteres padrão como UTF8 (nº 18219)
  • Preservação do WebSession.MaximumRedirection de alterações (nº 19190)
  • WebCmdlets analisam a declaração XML para obter o valor de codificação, se presente. (#18748)
  • Correção usando xml -Body em webcmdlets sem uma codificação (nº 19281)
  • Ajuste do comportamento do método PUT para POST para o tipo de conteúdo padrão em WebCmdlets (nº 19152)
  • Consideração de ContentType de Cabeçalhos em WebCmdlets (nº 19227)
  • Permissão da preservação do método HTTP original adicionando -PreserveHttpMethodOnRedirect aos cmdlets Web (#18894)
  • Webcmdlets exibia um erro em https para redirecionamento http (nº 18595)
  • Adição do switch AllowInsecureRedirect aos cmdlets Web (#18546)
  • Aprimoramento da mensagem detalhada em cmdlets da Web quando o comprimento do conteúdo era desconhecido (nº 19252)
  • Criação do URI relativo para links da resposta no Invoke-WebRequest (#19092)
  • Corrigir o redirecionamento para -CustomMethod POST em WebCmdlets (#19111)
  • Descartar resposta anterior em Webcmdlets (nº 19117)
  • Aperfeiçoamento do formato de erros xml e json Invoke-WebRequest (#18837)
  • Adição de ValidateNotNullOrEmpty aos parâmetros OutFile e InFile de WebCmdlets (#19044)
  • Lista de cabeçalhos de atualização httpKnownHeaderNames (nº 18947)
  • Invoke-RestMethod -FollowRelLink corrigir links que contêm vírgulas (#18829)
  • Correção do bug com o gerenciamento de redirecionamento e KeepAuthorization em cmdlets da Web (nº 18902)
  • Adição de StatusCode a HttpResponseException (#18842)
  • Suporte a conexões persistentes HTTP em cmdlets web (nº 19249) (Agradecimentos a, @stevenebutler!)
  • Pequena limpeza Invoke-RestMethod (#19490)
  • Aperfeiçoamento da mensagem detalhada de WebCmdlets para mostrar a versão HTTP correta (#19616)
  • Adição de FileNameStar a MultipartFileContent em WebCmdlets (#19467)
  • Correção do status HTTP de 409 a 429 para WebCmdlets para obter o intervalo de repetição do cabeçalho Retry-After. (nº 19622) (Obrigado @mkht!)
  • Alteração de -TimeoutSec para -ConnectionTimeoutSeconds e adição do -OperationTimeoutSeconds aos cmdlets da Web (#19558) (Nossos agradecimentos, @stevenebutler!) Outros cmdlets
  • Suporte ao Ctrl+c quando a conexão trava durante a leitura de dados em WebCmdlets (#19330) (Nossos agradecimentos, @stevenebutler!)
  • Suporte ao soquete de domínio Unix em WebCmdlets (#19343)

Aprimoramentos de outros cmdlet

  • Test-Connection agora retorna um erro sobre a necessidade de usar sudo em plataformas Linux ao usar um tamanho de buffer personalizado (nº 20369)
  • Adicionar tipos de saída aos comandos Format (nº 18746) (Obrigado, @MartinGC94!)
  • Adicionar atributos de tipo de saída para Get-WinEvent (#17948) (Obrigado @MartinGC94!)
  • Adição dos parâmetros Path e LiteralPath ao cmdlet Test-Json (#19042) (Graças a @ArmaanMcleod!)
  • Adição do parâmetro NoHeader aos cmdlets ConvertTo-Csv e Export-Csv (#19108) (Graças a @ArmaanMcleod!)
  • Adicionar parâmetros Confirm e WhatIf a Stop-Transcript(nº 18731) (Obrigado, @JohnLBevan!)
  • Adicionar parâmetro FuzzyMinimumDistance a Get-Command (nº 18261)
  • O parâmetro Encoding agora é capaz de aceitar a codificação ANSI no PowerShell (#19298) (Graças a @CarloToso!)
  • Adicionar progresso ao Copy-Item (#18735)
  • Update-Help agora relata um erro ao usar a cultura implícita em sistemas que não são dos EUA. (nº 17780) (Obrigado @dkaszews!)
  • Não exigir atividade ao criar um registro de progresso concluído (#18474) (Obrigado, @MartinGC94!)
  • Não permitir valores negativos para parâmetros Get-Content de cmdlet -Head e -Tail (#19715) (Nossos agradecimentos, @CarloToso!)
  • Faça Update-Help gerar um erro adequado quando a cultura atual não estiver associada a um idioma (#19765) (Obrigado @josea!))
  • Permitir a combinação de parâmetros -Skip e -SkipLast no cmdlet Select-Object. (nº 18849) (Obrigado @ArmaanMcleod!)
  • Adição do cmdlet Get-SecureRandom (#19587)
  • Set-Clipboard -AsOSC52 para uso remoto (nº 18222) (Obrigado @dkaszews!)
  • Aceleração da resolução do caminho relativo Resolve-Path (#19171) (Nossos agradecimentos, @MartinGC94!)
  • Adicionado o parâmetro de alternância -CaseInsensitive aos cmdlets Select-Object e Get-Unique (#19683) (Obrigado, @ArmaanMcleod!)
  • Restart-Computer e Stop-Computer devem falhar com erro quando não estiverem sendo executados via sudo no Unix (#19824)

Melhorias no motor

Atualizações para $PSStyle

  • Adiciona propriedades Dim e DimOff (nº 18653)
  • Foram adicionados métodos estáticos à classe PSStyle que mapeiam valores ConsoleColor em primeiro e segundo plano para sequências de escape ANSI (nº 17938)
  • Cabeçalhos de tabela para campos calculados são formatados em itálico por padrão
  • Adição de suporte respeitando $PSStyle.OutputRendering no host remoto (#19601)
  • Dados de telemetria atualizados para incluir o uso de módulos de CrescendoBuilt (#20371)

Outras atualizações do Mecanismo

  • Tornar a classe do PowerShell não afiliada ao Runspace ao declarar o atributo NoRunspaceAffinity (nº 18138)
  • Adicionar o atributo ValidateNotNullOrWhiteSpace (nº 17191) (Obrigado @wmentha!)
  • Adicionar sqlcmd à lista para passagem de argumento herdado (nº 18559)
  • Adicionar a função cd~ (nº 18308) (Obrigado, @GigaScratch!)
  • Correção da análise de tipo de matriz em tipos genéricos (#19205) (Nossos agradecimentos, @MartinGC94!)
  • Correção do caractere curinga na raiz dos caminhos do dispositivo (#19442) (Nossos agradecimentos, @MartinGC94!)
  • Adição de uma API pública para obter locais de elementos PSModulePath (#19422)
  • Correção da cadeia de caracteres incorreta para conversão de tipo (#19560) (Nossos agradecimentos, @MartinGC94!)
  • Corrigir a execução lenta quando vários pontos de interrupção são usados (#14953) (Obrigado @nohwnd!))
  • Remover código relacionado ao #requires -pssnapin (#19320)

Recursos experimentais

O PowerShell 7.4 apresenta os seguintes recursos experimentais:

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

Os seguintes recursos 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.