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. (nº 18141) (Agradecemos você,@gregsdennis!)! Para obter mais informações sobre esquemas JSON, veja a documentação do esquema JSON.- 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)
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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de