Compartilhar via


Novidades no PowerShell 7.3

O PowerShell 7.3 é a nova versão estável, criada a partir do .NET 7.0.

O PowerShell 7.3 inclui os recursos, as atualizações e as alterações da falha a seguir.

Alterações de falha e melhorias

  • Nesta versão, as APIs do Windows foram atualizadas ou removidas para conformidade, o que significa que o PowerShell 7.3 não é executado no Windows 7. Embora o Windows 7 não tenha mais suporte, os builds anteriores podem ser executados no Windows 7.
  • O PowerShell Direct para Hyper-V só tem suporte no Windows 10, versão 1809 e superiores.
  • Test-Connection está corrompido devido a uma alteração interruptiva intencional no .NET 7. O código de rastreamento é #17018
  • Adicionar o bloco clean ao bloco de script como um par para begin, process e end para permitir a limpeza fácil de recursos (#15177)
  • Alterar padrão de $PSStyle.OutputRendering para Host
  • Fazer com que Out-String e Out-File mantenham a entrada de cadeia de caracteres inalterada (#17455)
  • Mover a definição de dados de tipo de System.Security.AccessControl.ObjectSecurity para o módulo Microsoft.PowerShell.Security (nº 16355) (Obrigado, #16355) (Obrigado @iSazonov!)
    • Antes dessa alteração, o usuário não precisa importar explicitamente o módulo Microsoft.PowerShell.Security para usar as propriedades de código definidas para uma instância de System.Security.AccessControl.ObjectSecurity.
    • Após essa alteração, um usuário precisa importar explicitamente o módulo Microsoft.PowerShell.Security para usar essas propriedades de código e métodos de código.

Aprimoramentos de conclusão da guia

  • O PowerShell 7.3 inclui o PSReadline 2.2.6, que habilita o IntelliSense Preditivo por padrão. Para obter mais informações, confira about_PSReadLine.
  • Corrigir a conclusão da guia dentro do bloco de script especificado para o ValidateScriptAttribute. (#14550) (Obrigado @MartinGC94!)
  • Conclusão da guia adicionada para rótulos de loop após break/continue (#16438) (Obrigado @MartinGC94!)
  • Melhorar a conclusão da Hashtable em vários cenários (#16498) (Obrigado @MartinGC94!)
    • Nivelamento de parâmetro
    • Parâmetro Arguments paraInvoke-CimMethod
    • Parâmetro FilterHashtable paraGet-WinEvent
    • Parâmetro Property para os cmdlets CIM
    • Remove duplicatas de cenários de conclusão de membro
  • Dar suporte a barras "/" no preenchimento do compartilhamento de rede (caminho UNC) (#17111) (Obrigado @sba923!)
  • Aprimorar o preenchimento automático do membro (#16504) (Obrigado @MartinGC94!)
  • Priorizar o preenchimento de ValidateSet em relação a Enumerações para parâmetros (#15257) (Obrigado @MartinGC94!)
  • Adicionar suporte à inferência de tipo para métodos genéricos com parâmetros de tipo (#16951) (Obrigado @MartinGC94!)
  • Melhorar a inferência e as conclusões de tipo (#16963) (Obrigado @MartinGC94!)
    • Permite que os métodos sejam mostrados nos resultados de conclusão para ForEach-Object -MemberName
    • Impede a conclusão em expressões que retornam void como ([void](""))
    • Permite que construtores de classe não padrão apareçam quando a conclusão da classe é baseada no AST
  • Aprimorar a inferência de tipos para $_ (#17716) (Obrigado @MartinGC94!)
  • Corrigir inferência de tipos para ICollection (#17752) (Obrigado @MartinGC94!)
  • Impedir que chaves sejam removidas ao concluir variáveis (#17751) (Obrigado @MartinGC94!)
  • Adicionar preenchimento em expressões de índice para dicionários (#17619) (Obrigado @MartinGC94!)
  • Corrigir o preenchimento de tipo para tokens de atributo (#17484) (Obrigado @MartinGC94!)
  • Aprimorar o preenchimento da guia de parâmetro dinâmico (#17661) (Obrigado @MartinGC94!)
  • Evitar parâmetros posicionais de associação ao preencher o parâmetro na frente do valor (#17693) (Obrigado @MartinGC94!)

Tratamento de erro melhorado

  • Definir $? corretamente para a expressão de comando com redirecionamentos (#16046)
  • Corrigir um erro de conversão ao usar o $PSNativeCommandUseErrorActionPreference (#15993)
  • Fazer com que o tratamento de erro de comando nativo respeite opcionalmente o ErrorActionPreference (#15897)
  • Especificar o caminho do executável como TargetObject para o código de saída diferente de zero ErrorRecord (#16108) (Obrigado @rkeithhill!)

Melhorias de sessão e comunicação remota

  • Adição de -Options ao PSRP com comandos SSH para permitir a passagem de opções OpenSSH diretamente (#12802) (Obrigado @BrannenGH!)
  • Adicionar parâmetro -ConfigurationFile a pwsh para permitir iniciar um novo processo com a configuração de sessão definida em um .pssc arquivo (#17447)
  • Adicionar suporte para uso de New-PSSessionConfigurationFile em plataformas não Windows (#17447)

Cmdlets atualizados

  • Adicionar o parâmetro -HttpVersion aos cmdlets da Web (#15853) (Obrigado @hayhay27!)
  • Adicionar suporte a cmdlets da Web para tags de entrada abertas #16193) (Obrigado @farmerau!)
  • Correção de ConvertTo-Json -Depth para permitir 100 no máximo (#16197) (Obrigado @KevRitchie!)
  • Melhoria do tratamento de variáveis ao chamar Invoke-Command com a expressão $using: (#16113) (Obrigado @dwtaber!)
  • Adicionar -StrictMode a Invoke-Command para permitir especificar o modo estrito quando invocar o comando localmente (#16545) (Obrigado, @Thomas-Yu!)
  • Adicionar o bloco clean ao bloco de script como um par para begin, process e end para permitir a limpeza fácil de recursos (#15177)
  • Adicione o comutador -Amended ao cmdlet Get-CimClass (#1 (#17477) (Obrigado @iSazonov)
  • ConvertFrom-Json -AsHashtable alterado para usar tabelas de hash ordenadas 17405)
  • Sequências de escape ANSI removidas em cadeias de caracteres antes do envio para Out-GridView (#17664)
  • O parâmetro de Milissegundos foi adicionado a New-TimeSpan#17621) (Obrigado @NoMoreFood!)
  • Mostrar parâmetros opcionais ao exibir definições e sobrecargas de método (nº 13799) (graças a #13799) (Obrigado @eugenesmlv!)
  • Permitir que os comandos ainda sejam executados mesmo que o diretório de trabalho atual não exista mais (#17579)
  • Adicionar suporte para HTTPS com Set-AuthenticodeSignature -TimeStampServer (#16134) (Obrigado @Ryan-Hutchison-USAF!)
  • Renderizar números decimais em uma tabela usando a cultura atual (#17650)
  • Adicionar acelerador de tipo ordenado para OrderedDictionary (#17804) (Obrigado @fflaten!)
  • Adicionar find.exe ao comportamento de associação de argumento herdado para Windows (#17715)
  • Adicionar comutador -noprofileloadtime a pwsh (#17535) (Obrigado @rkeithhill!)

Para ver uma lista completa das alterações, confira o log de alterações no repositório do GitHub.

Recursos experimentais

No PowerShell 7.3, os seguintes recursos experimentais se tornaram base:

  • PSAnsiRenderingFileInfo – esse recurso adiciona o membro $PSStyle.FileInfo e permite a colorização de tipos de arquivo específicos.

  • PSCleanBlock – adiciona o bloco clean ao bloco de script como um par para begin, process e end para permitir uma limpeza rápida do recurso.

  • PSAMSIMethodInvocationLogging – Estende os dados enviados ao AMSI para inspeção de modo a incluir todas as invocações de membros do método .NET.

  • PSNativeCommandArgumentPassing – agora o PowerShell usa a propriedade ArgumentList do objeto StartProcessInfo em vez do mecanismo antigo de reconstrução de uma cadeia de caracteres ao invocar um executável nativo.

    O PowerShell 7.3.1 adiciona sqlcmd.exe à lista de comandos nativos no Windows que usam o estilo Legacy de passagem de argumento.

  • PSExec – adiciona o novo cmdlet Switch-Process (alias exec) para fornecer compatibilidade exec para sistemas não Windows.

    O PowerShell 7.3.1 alterou o alias exec para uma função que encapsula Switch-Process. A função permite que você passe parâmetros a um comando nativo que possa ter uma associação incorreta ao parâmetro WithCommand.

O PowerShell 7.3 apresenta os seguintes recursos experimentais:

  • PSNativeCommandErrorActionPreference – adiciona a variável $PSNativeCommandUseErrorActionPreference para habilitar erros produzidos por comandos nativos como erros do PowerShell.

O PowerShell 7.3 removeu os seguintes recursos experimentais:

  • Não há mais suporte para o recurso experimental PSNativePSPathResolution.
  • Não há mais suporte para o recurso experimental PSStrictModeAssignment.

Para obter mais informações sobre os recursos experimentais, confira Usar recursos experimentais.