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 interrompeTest-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.
- 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 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 usarsudo
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
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!) - 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 cmdletSelect-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 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)
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.
- Esse recurso também adiciona as propriedades FeedbackName, FeedbackTexte FeedbackAction para
- 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:
- 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, consulte Usando recursos experimentais.