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 parabegin
,process
eend
para permitir a limpeza fácil de recursos (#15177) - Alterar padrão de
$PSStyle.OutputRendering
para Host - Fazer com que
Out-String
eOut-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 para
Invoke-CimMethod
- Parâmetro FilterHashtable para
Get-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
- Permite que os métodos sejam mostrados nos resultados de conclusão para
- 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
apwsh
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
aInvoke-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 parabegin
,process
eend
para permitir a limpeza fácil de recursos (#15177) - Adicione o comutador
-Amended
ao cmdletGet-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 blococlean
ao bloco de script como um par parabegin
,process
eend
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 estiloLegacy
de passagem de argumento.PSExec
– adiciona o novo cmdletSwitch-Process
(aliasexec
) para fornecer compatibilidadeexec
para sistemas não Windows.O PowerShell 7.3.1 alterou o alias
exec
para uma função que encapsulaSwitch-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.