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-Connection
está 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 parabegin
,process
eend
para permitir uma limpeza fácil de recursos (#15177) - Alterar padrão para
$PSStyle.OutputRendering
Host - Fazer
Out-String
eOut-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
- Permite que os métodos sejam mostrados nos resultados de conclusão para
- 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 parapwsh
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 oInvoke-Command
comando localmente (#16545) (Obrigado @Thomas-Yu!) - Adicionar
clean
bloco ao bloco de script como um par parabegin
,process
eend
para permitir uma limpeza fácil de recursos (#15177) - Adicionar
-Amended
switch aoGet-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
- Adicionaclean
bloco ao bloco de script como um par parabegin
,process
eend
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 oLegacy
estilo de passagem de argumentos.PSExec
- Adiciona o novoSwitch-Process
cmdlet (aliasexec
) para fornecerexec
compatibilidade para sistemas que não sejam Windows.O PowerShell 7.3.1 alterou o
exec
alias para uma função que encapsulaSwitch-Process
o . 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.