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
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 quebraTest-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.
- Com essa alteração,
- 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 usarsudo
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 usarsudo
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
eExport-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 cmdletGet-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
emSelect-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 cmdletsSelect-Object
eGet-Unique
(#19683) (Obrigado @ArmaanMcleod!) -
Restart-Computer
eStop-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 deem 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.
- Esse recurso também adiciona as propriedades FeedbackName, FeedbackTexte FeedbackAction a
- 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:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PassagemDeArgumentosDoComandoNativoDoPSWindows
O PowerShell 7.4 alterou os seguintes recursos experimentais:
- PSCommandNotFoundSuggestion - Este recurso agora usa um provedor de feedback extensível em vez de sugestões codificadas (#18726)
Para obter mais informações sobre os recursos experimentais, consulte Usando recursos experimentais.