Novidades no PowerShell 7.4
O PowerShell 7.4 inclui os recursos, as atualizações e as alterações da falha a seguir. O PowerShell 7.4 é criado no .NET 8.0.0.
Para ver uma lista completa das alterações, confira o LOG DE MUDANÇAS no repositório do GitHub.
Alterações de quebra
- As imagens do docker do nano server não estão disponíveis para esta versão
- O parâmetro ProgressAction foi adicionado aos parâmetros comuns
- Atualização de algumas APIs do PowerShell para gerar ArgumentException em vez de ArgumentNullException quando o argumento era uma cadeia de caracteres vazia (nº 19215) (Agradecimentos a @xtqqczze!)
- Remoção do 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
deixou de oferecer suporte para os esquemas mais antigos do Draft 4. (#18141) (Obrigado @gregsdennis!). Para obter mais informações sobre esquemas JSON, consulte a documentação Esquema JSON. Isso também interrompe oTest-Json
para arquivos JSON e JSONC com comentários. - O suporte a
ConvertFrom-Json
ainda usa Newtonsoft.Json.Schema para poder converter arquivos JSON com comentários.
- Com essa alteração,
- 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 usarsudo
em plataformas Linux ao usar um tamanho de buffer personalizado (nº 20369) - O recurso experimental PSNativeCommandPreserveBytePipe passou a ter suporte base. 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.
- Alteração de como os caminhos relativos em
Resolve-Path
são tratados quando o parâmetro RelativeBasePath é usado (nº 19755) (Agradecemos a @MartinGC94!) - Remoção do código PSv2 não utilizado: remove a função TabExpansion (nº 18337)
Atualizações do instalador
O pacote MSI do Windows agora oferece uma opção para desabilitar a telemetria do PowerShell durante a instalação. Para obter mais informações, consulte Instalar o pacote msi por meio 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 o PowerShellGet v2.2.5 e o PackageManagement v1.4.8.1. Para obter mais informações, confira 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.
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)
- Correção do preenchimento do argumento posicional (nº 17796)
- Priorização do conjunto de parâmetros padrão no preenchimento de argumentos posicionais (nº 18755)
- Aprimoramento da pseudo associação para parâmetros dinâmicos (nº 18030)
- Aprimoramento da inferência de tipos de chaves de tabela hash (nº 17907)
- Correção do erro de inferência de tipo para instruções return vazias (nº 18351)
- Aprimoramento da inferência de tipos para Get-Random (nº 18972)
- Correção da inferência de tipo para todas as variáveis de escopo (nº 18758)
- Aprimoramento da enumeração de tipos inferidos no pipeline (nº 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)
- Adição de preenchimento ao usar palavras-chave (nº 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 a conclusão 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)
Aprimoramentos do cmdlet da Web
Nossos agradecimentos, @CarloToso e outros por todo o trabalho na melhoria do cmdlets Web.
- 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 for concluído 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)
- Os WebCmdlets analisavam a declaração XML para obter o valor de codificação, se houvesse. (nº 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) - Correção do redirecionamento de
-CustomMethod POST
em WebCmdlets (#19111) - Descartada a 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)
- Correção de links com vírgulas
Invoke-RestMethod -FollowRelLink
(#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!)
- Limpeza pequena
Invoke-RestMethod
(nº 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. (#19622) (Nossos agradecimentos, @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 usarsudo
em plataformas Linux ao usar um tamanho de buffer personalizado (nº 20369)- Adição de tipos de saída aos comandos Format (#18746) (Nossos agradecimentos, @MartinGC94!)
- Adição de atributos de tipo de saída para
Get-WinEvent
(#17948) (Nossos agradecimentos, @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
eExport-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!) - Adição do 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!) - Fazer com que
Update-Help
apresente um erro adequado quando a cultura atual não estiver associada a um idioma (#19765) (Obrigado, @josea!) - Permissão da combinação de parâmetros
-Skip
e-SkipLast
no cmdletSelect-Object
. (#18849) (Nossos agradecimentos, @ArmaanMcleod!) - Adição do cmdlet
Get-SecureRandom
(#19587) Set-Clipboard -AsOSC52
para uso remoto (#18222) (Nossos agradecimentos, @dkaszews!)- Aceleração da resolução do caminho relativo
Resolve-Path
(#19171) (Nossos agradecimentos, @MartinGC94!) - Foi adicionado o parâmetro switch
-CaseInsensitive
para os cmdletsSelect-Object
eGet-Unique
(#19683) (Obrigado @ArmaanMcleod!) Restart-Computer
eStop-Computer
devem falhar com erro quando não estiverem sendo executados via sudo no Unix (#19824)
Aprimoramentos no mecanismo
Atualização 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
CrescendoBuilt
(nº 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!)
- Correção da execução lenta quando muitos pontos de interrupção são usados (#14953) (Nossos agradecimentos, @nohwnd!)
- Remoção do código relacionado a
#requires -pssnapin
(#19320)
Recursos experimentais
O PowerShell 7.4 apresenta os seguintes recursos experimentais:
- PSFeedbackProvider – substitui a estrutura de sugestão codificada por um provedor de feedback extensível.
- Esse recurso também adiciona as propriedades FeedbackName, FeedbackText e FeedbackAction a
$PSStyle.Formatting
que permitem que você altere a formatação de mensagens de comentários.
- Esse recurso também adiciona as propriedades FeedbackName, FeedbackText e FeedbackAction a
- PSModuleAutoLoadSkipOfflineFiles – a descoberta de módulos agora ignora arquivos marcados por provedores de nuvem como não totalmente em disco.
- PSCommandWithArgs – adição de suporte para passar argumentos para comandos como uma única cadeia de caracteres
Os seguintes recursos experimentais tornaram-se comuns:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
O PowerShell 7.4 alterou os seguintes recursos experimentais:
- PSCommandNotFoundSuggestion – esse recurso agora usa um provedor de comentários extensível em vez de sugestões embutidas em código (nº 18726)
Para obter mais informações sobre os recursos experimentais, confira Usar recursos experimentais.