Partilhar via


O que há de novo no PowerShell 7.3

O PowerShell 7.3 é a próxima versão estável, baseada no .NET 7.0.

O PowerShell 7.3 inclui os seguintes recursos, atualizações e alterações de quebra.

Mudanças e melhorias significativas

  • Nesta versão, as APIs do Windows foram atualizadas ou removidas para fins de conformidade, o que significa que o PowerShell 7.3 não é executado no Windows 7. Embora o Windows 7 não seja mais suportado, as compilações anteriores podem ser executadas no Windows 7.
  • O PowerShell Direct para Hyper-V só é suportado no Windows 10, versão 1809 e superior.
  • Test-Connectionestá quebrado devido a uma alteração de quebra intencional no .NET 7. É rastreado por #17018
  • Adicionar clean bloco ao bloco de script como um par para begin, processe end para permitir uma limpeza fácil de recursos (#15177)
  • Alterar padrão para $PSStyle.OutputRendering Host
  • Fazer Out-String e Out-File manter a entrada de string inalterada (#17455)
  • Mova a definição de dados de tipo de System.Security.AccessControl.ObjectSecurity para o módulo Microsoft.PowerShell.Security (#16355) (Obrigado @iSazonov!)
    • Antes dessa alteração, um 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.

Melhorias na conclusão de guias

  • O PowerShell 7.3 inclui o PSReadline 2.2.6, que habilita o IntelliSense Preditivo por padrão. Para obter mais informações, consulte about_PSReadLine.
  • Corrija o preenchimento da guia dentro do bloco de script especificado para o ValidateScriptAttribute. (#14550) (Obrigado @MartinGC94!)
  • Adicionado preenchimento de guia para rótulos de loop após break/continue (#16438) (Obrigado @MartinGC94!)
  • Melhorar a conclusão do Hashtable em vários cenários (#16498) (Obrigado @MartinGC94!)
    • Splatting de parâmetros
    • Parâmetro Arguments para Invoke-CimMethod
    • Parâmetro FilterHashtable para Get-WinEvent
    • Parâmetro de propriedade para os cmdlets CIM
    • Remove duplicatas de cenários de conclusão de membros
  • Suporte a barras avançadas na conclusão do compartilhamento de rede (caminho UNC) (#17111) (Obrigado @sba923!)
  • Melhorar o preenchimento automático de membros (#16504) (Obrigado @MartinGC94!)
  • Priorizar as finalizações do ValidateSet sobre Enums para parâmetros (#15257) (Obrigado @MartinGC94!)
  • Adicionar suporte de inferência de tipo para métodos genéricos com parâmetros de tipo (#16951) (Obrigado @MartinGC94!)
  • Melhorar a inferência de tipo e completações (#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 vazias como ([void](""))
    • Permite que construtores de classe não padrão apareçam quando a conclusão da classe é baseada no AST
  • Melhorar a inferência de tipo para $_ (#17716) (Obrigado @MartinGC94!)
  • Corrigir inferência de tipo para ICollection (#17752) (Obrigado @MartinGC94!)
  • Impedir que chaves sejam removidas ao completar variáveis (#17751) (Obrigado @MartinGC94!)
  • Adicionar conclusão para expressões de índice para dicionários (#17619) (Obrigado @MartinGC94!)
  • Corrigir conclusão de tipo para tokens de atributo (#17484) (Obrigado @MartinGC94!)
  • Melhorar a conclusão da guia de parâmetros dinâmicos (#17661) (Obrigado @MartinGC94!)
  • Evite a vinculação de parâmetros posicionais ao completar o parâmetro na frente do valor (#17693) (Obrigado @MartinGC94!)

O processamento de erros foi melhorado

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

Melhorias na sessão e comunicação remota

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

Cmdlets atualizados

  • Adicionar -HttpVersion parâmetro a cmdlets da Web (#15853) (Obrigado @hayhay27!)
  • Adicionar suporte a cmdlets da Web para tags de entrada abertas (#16193) (Obrigado @farmerau!)
  • Correção ConvertTo-Json -Depth para permitir 100 no máximo (#16197) (Obrigado @KevRitchie!)
  • Melhorar o manuseio de variáveis ao chamar Invoke-Command com a $using: expressão (#16113) (Obrigado @dwtaber!)
  • Adicionar -StrictMode a para permitir a especificação do modo estrito ao invocar o Invoke-Command comando localmente (#16545) (Obrigado @Thomas-Yu!)
  • Adicionar clean bloco ao bloco de script como um par para begin, processe end para permitir uma limpeza fácil de recursos (#15177)
  • Adicionar -Amended switch ao Get-CimClass cmdlet (#17477) (Obrigado @iSazonov)
  • Alterado ConvertFrom-Json -AsHashtable para usar hashtable ordenado (#17405)
  • Sequências de escape ANSI removidas em strings antes de enviar para Out-GridView (#17664)
  • Adicionado o parâmetro Milliseconds para New-TimeSpan (#17621) (Obrigado @NoMoreFood!)
  • Mostrar parâmetros opcionais ao exibir definições de método e sobrecargas (#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 vinculação de argumento herdado para Windows (#17715)
  • Adicionar -noprofileloadtime switch para pwsh (#17535) (Obrigado @rkeithhill!)

Para obter uma lista completa das alterações, consulte o Log de alterações no repositório GitHub.

Características experimentais

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

  • PSAnsiRenderingFileInfo - Este recurso adiciona o $PSStyle.FileInfo membro e permite colorir tipos de arquivos específicos.

  • PSCleanBlock - Adiciona clean bloco ao bloco de script como um par para begin, processe end para permitir uma limpeza fácil de recursos.

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

  • PSNativeCommandArgumentPassing - O PowerShell agora usa a propriedade ArgumentList do objeto StartProcessInfo, em vez do antigo mecanismo 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 Legacy estilo de passagem de argumentos.

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

    O PowerShell 7.3.1 alterou o exec alias para uma função que encapsula Switch-Processo . A função permite que você passe parâmetros para o comando nativo que pode ter erroneamente ligado ao parâmetro WithCommand .

O PowerShell 7.3 apresenta os seguintes recursos experimentais:

  • PSNativeCommandErrorActionPreference - Adiciona a variável para permitir que erros $PSNativeCommandUseErrorActionPreference produzidos por comandos nativos sejam erros do PowerShell.

O PowerShell 7.3 removeu os seguintes recursos experimentais:

  • PSNativePSPathResolution O recurso experimental não é mais suportado.
  • PSStrictModeAssignment O recurso experimental não é mais suportado.

Para obter mais informações sobre os recursos experimentais, consulte Usando recursos experimentais.