Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O PowerShell 7.5.4 inclui os seguintes recursos, atualizações e alterações interruptivas. O PowerShell 7.5.4 foi criado na versão .NET 9.0.306.
Para ver uma lista completa das alterações, confira o LOG DE MUDANÇAS no repositório do GitHub. Para obter mais informações sobre o .NET 9, confira as novidades no .NET 9.
Alterações de quebra
- Corrigir os parâmetros
-OlderThane-NewerThanparaTest-Pathao usarPathTypee intervalo de datas (nº20942) (Obrigado @ArmaanMcleod!)- Anteriormente,
-OlderThanseria ignorado se especificado em conjunto
- Anteriormente,
- Altere o padrão
New-FileCatalog -CatalogVersionpara 2 (nº20428) (Obrigado @ThomasNieto!) - Bloquear a obtenção de ajuda de locais de rede em sessões remotas restritas (nº20593)
- O instalador do Windows agora lembra as opções de instalação usadas e as utiliza para inicializar as opções da próxima instalação (n° 20420) (Obrigado, @reduckted!)
-
ConvertTo-Jsonagora serializaBigIntegercomo um número (n° 21000) (Obrigado, @jborean93!)
Módulos atualizados
O PowerShell 7.5.4 inclui os seguintes módulos atualizados:
- Microsoft.PowerShell.PSResourceGet v1.1.1
- PSReadLine v2.3.6
Aprimoramentos de conclusão da guia
Muito obrigado a @ArmaanMcleod e a outras pessoas por todo o seu trabalho para aprimorar a conclusão das guias.
- Voltar à inferência de tipo quando o valor-chave hashtable não puder ser recuperado da expressão segura (n° 21184) (Obrigado, @MartinGC94!)
- Corrigir a regressão ao fazer a inferência de tipos para
$_(n° 21223) (Obrigado, @MartinGC94!) - Expandir
~para$HOMEno Windows com preenchimento de guia (n° 21529) - Não concluir ao declarar o nome do parâmetro e o membro da classe (n° 21182) (Obrigado, @MartinGC94!)
- Impedir o fallback para a conclusão do arquivo quando o tabulador completar nomes de tipos (nº20084) (Obrigado @MartinGC94)
- Adicionar complemento de argumento a
-VersionparaSet-StrictMode(nº20554) (Obrigado @ArmaanMcleod!) - Adicionar o concluidor de argumentos
-VerbparaGet-Verb/Get-Commande refatorarGet-Verb(nº20286) (Obrigado @ArmaanMcleod) - Adicionar o complemento do argumento
-VerbparaStart-Process(nº20415) (Obrigado @ArmaanMcleod) - Adicionar o complemento do argumento
-Scopepara comandos*-Variable,*-Alias&*-PSDrive(nº 20451) (Obrigado @ArmaanMcleod) - Adicionar a conclusão
-ModuleparaSave-Help/Update-Helpcomandos (nº20678) (Obrigado @ArmaanMcleod)
Novos cmdlets
- Adicionar os cmdlets
ConvertTo-CliXmleConvertFrom-CliXml(nº 21063) (Obrigado @ArmaanMcleod!)
Melhorias nos cmdlets da Web
- Correção para permitir que
-PassThrue-Outfilefuncionem juntos (#24086) - Adicionar
OutFilepropriedade emWebResponseObject(#24047) - Mostrar nome de arquivo em
Invoke-WebRequest -OutFile -Verbose(#24041) - Corrigir WebCmdlets quando
-Bodyé especificado, masContentTypenão é (#23952) (Obrigado @CarloToso!) - Corrigir
Invoke-WebRequestpara informar o tamanho correto quando-Resumefor especificado (nº20207) (Obrigado @LNKLEO!) - Corrigir os Cmdlets Web para permitir que os aplicativos
WinFormfuncionem corretamente (nº20606)
Aprimoramentos de outros cmdlet
- Consertar
Out-GridViewsubstituindo o uso do obsoletoBinaryFormatterpor implementação personalizada (#25559) - Habilitar
-NoRestartpara trabalhar comRegister-PSSessionConfiguration(nº 23891) - Adição dos parâmetros
IgnoreCommentse opçõesAllowTrailingCommasao cmdletTest-Json(nº 23817) (Obrigado @ArmaanMcleod!) - Get-Help pode relatar parâmetros com o atributo
ValueFromRemainingArgumentscomo passível de uso em pipeline (nº 23871) - Alterar tipo de
LineNumberparaulongemSelect-String(nº 24075) (Obrigado @Snowman-25!) -
Get-Process: remover o requisito de administrador para-IncludeUserName(n° 21302) (Obrigado, @jborean93!) - Corrigir
Test-Path -IsValidpara verificar se há caracteres inválidos de caminho e nome de arquivo (n° 21358) - Adicionar
RecommendedActionaoConciseViewdo relatório de erros (n° 20826) (Obrigado, @JustinGrote!) - Adicionada barra de progresso para o cmdlet
Remove-Item(n° 20778) (Obrigado, @ArmaanMcleod!) - Correção
Test-Connectiondevido a alterações no .NET 8 (nº20369) - Corrigir a mensagem de erro
Get-Servicenão finalizada para incluir a categoria (nº20276) - Adicione os parâmetros
-Emptye-InputObjectaNew-Guid(nº20014) (Obrigado @CarloToso!) - Adicione o alias
rao parâmetro-Recursedo comandoGet-ChildItem(nº20100) (Obrigado @kilasuit!) - Adicionar aliases
LPaLiteralPathpara funções ainda estão ausentes (nº20820) - Adicionar fallback de localização implícita para
Import-LocalizedData(nº19896) (Obrigado @chrisdent-de!) - Adicione
Aliasesàs propriedades exibidas ao formatar o conteúdo da ajuda do parâmetro retornado porGet-Help(nº20994) - Adicionar
HelpUriaRemove-Service(nº20476) - Correção da falha de conclusão do provedor SCCM (nº20815, nº20919, nº20915) (Obrigado @MartinGC94!)
- Corrigir a regressão em
Get-Contentquando-Tail 0e-Waitsão usados juntos (nº20734) (Obrigado @CarloToso!) - Corrija
Start-Process -PassThrupara garantir que a propriedadeExitCodeesteja acessível para o objetoProcessretornado (nº20749) (Obrigado @CodeCyclone!) - Corrigir
Group-Objectpara usar a cultura atual em sua saída (nº20608) - Corrigir a saída
Group-Objectusando cadeia de caracteres interpoladas (nº20745) (Obrigado @mawosoft!) - Corrigir a renderização de
DisplayRootpara a redePSDrive(nº20793) - Corrigir o progresso de
Copy-Itempara que seja exibido como concluído somente quando todos os arquivos forem copiados (nº20517) - Corrigir a regressão do preenchimento do caminho UNC (nº20419) (Obrigado @MartinGC94!)
- Reportar o erro se
-ExecutionPolicyinválido for passado parapwsh(nº20460) - Adicione os módulos WinGetCommandNotFound e CompletionPredictor para rastrear o uso (#21040)
- Adicione o parâmetro DateKind a
ConvertFrom-Json(#20925) (Obrigado @jborean93!) - Adicione DirectoryInfo ao OutputType para New-Item (nº 21126) (Obrigado @MartinGC94!)
- Corrigir
Get-Errorserialização de valores de matriz (#21085) (Obrigado @jborean93!) - Corrigir
Test-ModuleManifestpara que ele possa usar um caminho UNC (nº 24115) - Corrigir
Get-TypeDatapara gravar no pipeline imediatamente em vez de coletar dados primeiro (#24236) (Obrigado @MartinGC94)) - Adicionar o parâmetro
-Forceaos cmdletsResolve-PatheConvert-Pathpara dar suporte a arquivos ocultos com caracteres curinga #20981 (Obrigado @ArmaanMcleod!) - Definir manipuladores padrão explicitamente ao iniciar um processo com
-NoNewWindow(#25324) - Torne acessíveis, no escopo da classe, os membros de instância protegidos internos herdados. (nº 25547) (Obrigado @mawosoft!)
- Remova a sugestão difusa antiga e corrija a sugestão de nome do arquivo de script local (nº 25330)
- Método Fix
PSMethodInvocationConstraints.GetHashCode(nº 25306) (Obrigado @crazyjncsu!)
Aprimoramentos no mecanismo
- Mover o registro da invocação do método .NET para depois que a conversão de tipo necessária for feita nos argumentos do método (#25357)
- Reversão para AppLocker após
WldpCanExecuteFile(nº 25305) - Iniciar e parar explicitamente a cor de erro ANSI (# 24065) (Obrigado @JustinGrote!)
- Melhorar a definição de sobrecarga do .NET de métodos genéricos (nº 21326) (Obrigado @jborean93!)
- Otimizar a operação
+=de uma coleção quando for uma matriz de objetos (nº 23901) (Obrigado @jborean93!) - Adicionar telemetria para verificar se há tags específicas ao importar um módulo (nº20371)
- Adicione
PSAdaptereConsoleGuiToolsà lista de permissões de telemetria de carga do módulo (nº20641) - Adicionar o módulo WinGet para controlar o uso (nº 21040)
- Certifique-se de que o nome do arquivo não seja nulo ao registrar eventos do WDAC ETW (nº20910) (Obrigado @jborean93!)
- Correção de quatro regressões introduzidas pelo recurso de registro do WDAC (nº20913)
- Deixar os identificadores de entrada, saída e erro sem definição quando eles não forem redirecionados (nº20853)
- Corrigir os cmdlets de proxy de comunicação remota implícita para atuar em parâmetros comuns (nº20367)
- Incluir a versão do módulo em mensagens de erro quando o módulo não for encontrado (nº20144) (Obrigado @ArmaanMcleod!)
- Corrigir
unixmodepara lidar comsetuidestickyquando o arquivo não for um executável (nº20366) - Corrigido o uso de assembly para usar Path.Combine ao construir caminhos de montagem (#21169)
- Valide o valor para usar namespace durante verificações semânticas para evitar a declaração de namespaces inválidos (#21162)
- Lidar com a ferramenta global especialmente ao anexar
$PSHOMEao PATH (#24228)
Recursos experimentais
Os seguintes recursos experimentais foram convertidos em recursos principais no PowerShell 7.5-rc.1:
Os seguintes recursos experimentais estão incluídos no PowerShell 7.5-rc.1:
- PSRedirectToVariable - Permite redirecionar para uma variável (nº 20381)
- PSNativeWindowsTildeExpansion - Adicionar expansão de til para executáveis nativos do Windows (#20402) (Obrigado @domsleee!)
-
PSSerializeJSONLongEnumAsNumber -
ConvertTo-Jsonagora trata enumerações grandes como números (n º20999) (Obrigado @jborean93!)
Aprimoramentos de desempenho
O PowerShell 7.5-rc.1 incluiu PR#23901 de @jborean93 que melhora o desempenho da += operação para uma matriz de objetos.
O exemplo abaixo mede o desempenho de diferentes métodos de adição de elementos a uma matriz.
$tests = @{
'Direct Assignment' = {
param($count)
$result = foreach($i in 1..$count) {
$i
}
}
'List<T>.Add(T)' = {
param($count)
$result = [Collections.Generic.List[int]]::new()
foreach($i in 1..$count) {
$result.Add($i)
}
}
'Array+= Operator' = {
param($count)
$result = @()
foreach($i in 1..$count) {
$result += $i
}
}
}
5kb, 10kb | ForEach-Object {
$groupResult = foreach($test in $tests.GetEnumerator()) {
$ms = (Measure-Command { & $test.Value -Count $_ }).TotalMilliseconds
[pscustomobject]@{
CollectionSize = $_
Test = $test.Key
TotalMilliseconds = [Math]::Round($ms, 2)
}
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
}
$groupResult = $groupResult | Sort-Object TotalMilliseconds
$groupResult | Select-Object *, @{
Name = 'RelativeSpeed'
Expression = {
$relativeSpeed = $_.TotalMilliseconds / $groupResult[0].TotalMilliseconds
$speed = [Math]::Round($relativeSpeed, 2).ToString() + 'x'
if ($speed -eq '1x') { $speed } else { $speed + ' slower' }
}
} | Format-Table -AutoSize
}
Ao executar o script no PowerShell 7.4.6, você verá que usar o operador += é o método mais lento.
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
5120 Direct Assignment 4.17 1x
5120 List<T>.Add(T) 90.79 21.77x slower
5120 Array+= Operator 342.58 82.15x slower
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
10240 Direct Assignment 0.64 1x
10240 List<T>.Add(T) 184.10 287.66x slower
10240 Array+= Operator 1668.13 2606.45x slower
Ao executar o script no PowerShell 7.5-rc.1, você verá que usar o operador += é muito mais rápido do que o PowerShell 7.4.6. Agora, também é mais rápido do que usar o método List<T>.Add(T).
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
5120 Direct Assignment 4.71 1x
5120 Array+= Operator 40.42 8.58x slower
5120 List<T>.Add(T) 92.17 19.57x slower
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
10240 Direct Assignment 1.76 1x
10240 Array+= Operator 104.73 59.51x slower
10240 List<T>.Add(T) 173.00 98.3x slower