O que há de novo no PowerShell 7.4
O PowerShell 7.4 inclui os seguintes recursos, atualizações e alterações de quebra. O PowerShell 7.4 é baseado no .NET 8.0.0.
Para obter uma lista completa das alterações, consulte o CHANGELOG no repositório GitHub.
Alterações interruptivas
- 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 a
#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 a documentação do 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 de agora inclui informações mais detalhadas sobre testes de
Test-Connection
conexão TCP - O .NET introduziu alterações que afetaram o
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 stdout de um comando nativo para um arquivo ou ao canalizar dados de fluxo de bytes para o fluxo stdin de um comando nativo.
- Alterar como os caminhos relativos são manipulados ao
Resolve-Path
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 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 de 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 conclusão de guias
Muito obrigado a @MartinGC94 e outros por todo o seu trabalho para melhorar a conclusão das guias.
- 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)
- Priorizar 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 hashtable (#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 para Usar 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 de instrução foreach (#19814)
- Corrigir precedência de inferência de 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 a conclusão da chave Hashtable para atribuições de variáveis restritas por tipo, Hashtables aninhadas e muito mais (#17660)
- Inferir saída de aplicativo externo como strings (#19193)
- Atualização de conclusão de parâmetros para enums para excluir valores não permitidos por
ValidateRange
atributos (#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
evitar casos de uso com comandos nativos (#21529)
Melhorias no cmdlet da Web
Muito obrigado a @CarloToso e outros por todo o trabalho na melhoria dos cmdlets da Web.
- Corrigir a descompactação em cmdlets da Web para incluir 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 estiver concluído ou cancelado (#18130)
- Os cmdlets da Web obtêm o intervalo 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)
- Preservar WebSession.MaximumRedirection de alterações (#19190)
- Os 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 (#19281)
- Ajuste o comportamento do método PUT para POST um para o tipo de conteúdo padrão em WebCmdlets (#19152)
- Leve em consideração ContentType de cabeçalhos em WebCmdlets (#19227)
- Permitir preservar o método HTTP original adicionando -PreserveHttpMethodOnRedirect a cmdlets da Web (#18894)
- Webcmdlets exibem um erro no redirecionamento https para http (#18595)
- Adicionar opção AllowInsecureRedirect a cmdlets da Web (#18546)
- Melhorar a mensagem detalhada em 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 resposta anterior em Webcmdlets (#19117)
- Melhorar o
Invoke-WebRequest
formato de erros xml e json (#18837) - Adicionar parâmetros ValidateNotNullOrEmpty aos parâmetros OutFile e InFile dos WebCmdlets (#19044)
- Lista de cabeçalhos de atualização HttpKnownHeaderNames (#18947)
Invoke-RestMethod -FollowRelLink
corrigir links contendo vírgulas (#18829)- Corrigir bug com gerenciamento de redirecionamento e KeepAuthorization em cmdlets da Web (#18902)
- Adicionar StatusCode a HttpResponseException (#18842)
- Suporte a 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 a MultipartFileContent em WebCmdlets (#19467)
- Corrija o status HTTP de 409 para 429 para WebCmdlets para obter o intervalo de repetição do cabeçalho Retry-After. (#19622) (Obrigado @mkht!)
- Alterar
-TimeoutSec
e adicionar-OperationTimeoutSeconds
a-ConnectionTimeoutSeconds
cmdlets da Web (#19558) (Obrigado @stevenebutler!) 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 parâmetros Path e LiteralPath ao
Test-Json
cmdlet (#19042) (Obrigado @ArmaanMcleod!) - Adicionar parâmetro NoHeader a
ConvertTo-Csv
eExport-Csv
cmdlets (#19108) (Obrigado @ArmaanMcleod!) - Adicionar parâmetros Confirm e WhatIf a
Stop-Transcript
(#18731) (Obrigado @JohnLBevan!) - Adicione o parâmetro FuzzyMinimumDistance a
Get-Command
(#18261) - Tornar o parâmetro Encoding capaz de usar
ANSI
codificação no PowerShell (#19298) (Obrigado @CarloToso!) - Adicionar progresso a
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 registro de progresso concluído (#18474) (Obrigado @MartinGC94!)
- Não permitir valores negativos para
Get-Content
parâmetros-Head
de cmdlet e-Tail
(#19715) (Obrigado @CarloToso!) - Cometa
Update-Help
um erro adequado quando a cultura atual não está associada a um idioma (#19765) (Obrigado @josea!) - Permitir a combinação de
-Skip
parâmetros e-SkipLast
noSelect-Object
cmdlet. (#18849) (Obrigado @ArmaanMcleod!) - Adicionar
Get-SecureRandom
cmdlet (#19587) Set-Clipboard -AsOSC52
para uso remoto (#18222) (Obrigado @dkaszews!)- Acelerar a
Resolve-Path
resolução do caminho relativo (#19171) (Obrigado @MartinGC94!) - Adicionado o parâmetro
-CaseInsensitive
switch paraSelect-Object
eGet-Unique
cmdlets (#19683) (Obrigado @ArmaanMcleod!) Restart-Computer
eStop-Computer
deve falhar com erro quando não estiver executando via sudo no Unix (#19824)
Melhorias no motor
Atualizações para $PSStyle
- Adiciona propriedades Dim e DimOff (#18653)
- Adicionados métodos estáticos à classe PSStyle que mapeiam valores ConsoleColor em 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
- Adicionar suporte de respeito
$PSStyle.OutputRendering
no host remoto (#19601) - Dados de telemetria atualizados para incluir o uso de
CrescendoBuilt
módulos (#20371)
Outras atualizações do mecanismo
- Tornar a classe PowerShell não afiliada ao Runspace ao declarar o
NoRunspaceAffinity
atributo (#18138) - Adicione o
ValidateNotNullOrWhiteSpace
atributo (#17191) (Obrigado @wmentha!) - Adicionar
sqlcmd
à lista para passagem de argumentos herdados (#18559) - Adicionar a função
cd~
(#18308) (Obrigado @GigaScratch!) - Corrigir análise de tipo de matriz em tipos genéricos (#19205) (Obrigado @MartinGC94!)
- Corrigir globbing curinga na raiz dos caminhos do dispositivo (#19442) (Obrigado @MartinGC94!)
- Adicionar uma API pública para obter locais de elementos PSModulePath (#19422)
- Corrigir string incorreta para conversão de tipo (#19560) (Obrigado @MartinGC94!)
- Corrigir a execução lenta quando muitos pontos de interrupção são usados (#14953) (Obrigado @nohwnd!)
- Remover código relacionado a
#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, FeedbackText e FeedbackAction para
$PSStyle.Formatting
que você altere a formatação das mensagens de feedback.
- Esse recurso também adiciona as propriedades FeedbackName, FeedbackText e FeedbackAction para
- PSModuleAutoLoadSkipOfflineFiles - A descoberta de módulos agora ignora arquivos marcados por provedores de nuvem como não totalmente no disco.
- PSCommandWithArgs - Adicione suporte para passar argumentos para comandos como uma única cadeia de caracteres
As seguintes características experimentais tornaram-se comuns:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoração
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
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.