Compartilhar via


Novidades no PowerShell Core 6.2

A versão 6.2 do PowerShell Core concentrou-se nas melhorias de desempenho, correções de bug e aprimoramentos secundários de cmdlet e linguagem que elevam a qualidade. Para ver uma lista completa de melhorias, consulte nossos logs de alterações no GitHub.

Recursos experimentais

Anteriormente, habilitamos o suporte aos Recursos experimentais. Na versão 6.2, temos quatro recursos experimentais para testar. Forneça seus comentários para que possamos fazer melhorias e decidir se vale a pena promover o recurso para a versão final.

Use Get-ExperimentalFeature para obter uma lista de recursos experimentais disponíveis. Você pode habilitar ou desabilitar esses recursos com Enable-ExperimentalFeature e Disable-ExperimentalFeature.

Sugestões de comando não encontrado

Esse recurso usa a correspondência difusa para localizar sugestões de comandos ou cmdlets que você possa ter digitado incorretamente.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Exemplo

Neste exemplo, o nome do cmdlet grafado incorretamente tem correspondência difusa com várias sugestões, das mais prováveis às menos prováveis.

Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.

Envio em lote para comunicação remota implícita

Ao usar a comunicação remota implícita em um pipeline, o PowerShell trata cada comando no pipeline de maneira independente. Os objetos são repetidamente serializados e de-serialized entre o sistema remoto e cliente durante a execução do pipeline.

Com esse recurso, o PowerShell analisa o pipeline para determinar se o comando é seguro para execução e se existe no sistema de destino. Em caso positivo, o PowerShell executa todo o pipeline remotamente e serializa e de-serializes os resultados de volta somente para o cliente.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Um teste real de Get-Process | Sort-Object pelo localhost diminui de 10 s a 15 segundos para 20 ms a 30 milissegundos. O recurso só precisa ser habilitado no cliente. Não é preciso fazer qualquer alteração no servidor.

Unidade Temp

Enable-ExperimentalFeature -Name PSTempDrive

Se estiver usando o PowerShell Core em diferentes sistemas operacionais, você descobrirá que a variável de ambiente para encontrar o diretório temporário é diferente no Windows, macOS e Linux! Com esse recurso, você obtém um PSDrive chamado Temp: que é mapeado automaticamente para a pasta temporária do sistema operacional que você está usando.

Exemplo

PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!

Esteja ciente de que os comandos do arquivo nativo (como ls no Linux) não reconhecem PSDrives e não verão essa unidade Temp:.

Expansão de abreviação

Os cmdlets do PowerShell costumam ter nomes descritivos. Isso resulta em nomes longos que são mais difíceis de digitar. Esse recurso permite que você digite apenas os caracteres maiúsculos do cmdlet e use o preenchimento com Tab para encontrar uma correspondência.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Exemplo

PS> i-arsavsf

Se você pressionar Tab e tiver o módulo Az do Azure PowerShell instalado, o cmdlet será preenchido automaticamente desta forma:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Observação

Esse recurso deve ser usado de modo interativo. As formas abreviadas dos cmdlets não podem ser executadas. Esse recurso não é uma substituição de aliases.

Alterações de quebra

  • Correção do comportamento -NoEnumerate em Write-Output para ser consistente com o Windows PowerShell. (nº 9069)
  • Tornar Join-String -InputObject 1,2,3 o resultado igual ao 1,2,3 | Join-String resultado (#8611) (Obrigado @sethvs!)
  • Adicionar -Stable a Sort-Object e testes relacionados (#7862) (Obrigado @KirkMunro!)
  • Melhorar Start-Sleep o cmdlet para aceitar segundos fracionários (#8537) (Obrigado, @Prototyyppi!)
  • Alteração da tabela de hash para usar OrdinalIgnoreCase de modo a ser case-insensitive em todas as Culturas (nº 8566)
  • Corrigir LiteralPath em Import-Csv para associar à Get-ChildItem saída (#8277) (Obrigado @iSazonov!)
  • Não ignorará mais uma coluna sem nome se o delimitador de aspas duplas for usado em Import-Csv (#7899) (Obrigado, @Topping!)
  • Get-ExperimentalFeature não tem mais a opção -ListAvailable (nº 8318)
  • O parâmetro de depuração agora define $DebugPreference como Continuar em vez de Inquire (#8195) (Obrigado @KirkMunro!)
  • Cumprimento de -OutputFormat se especificado no comando não interativo, redirecionado, codificado usado com pwsh (nº 8115)
  • Carregamento do assembly do caminho base do módulo antes de tentar carregar do GAC (nº 8073)
  • Remoção do til dos pacotes de visualização do Linux (nº 8244)
  • Movimentação do processamento de -WorkingDirectory antes do processamentos dos perfis (nº 8079)
  • Não adicione PATHEXT variável de ambiente no Unix (#7697) (Obrigado, @iSazonov!)

Problemas conhecidos

  • A comunicação remota em plataformas ARM do Windows IOT apresenta um problema de carregamento de módulos. Consulte (nº 8053)

Correções e atualizações gerais

  • Habilitação do preenchimento automático com Tab sem diferenciação entre maiúsculas e minúsculas para arquivos e pastas em sistemas de arquivos que diferenciam maiúsculas de minúsculas (nº 8128)
  • Tornar PSVersionInfo.PSVersion e PSVersionInfo.PSEdition públicos (#8054) (obrigado @KirkMunro!)
  • Adicionar Inferência de Tipo para $_ / $PSItem em catch{ } blocos (#8020) (Obrigado, @vexx32!)
  • Corrigir a inferência do tipo de invocação de método estático (#8018) (Obrigado, @SeeminglyScience!)
  • Create tipos inferidos para Select-Object, Group-Object, PSObject e Hashtable (#7231) (Obrigado@powercode!)
  • Suporte ao método de chamada com parâmetros de tipo ByRef-like (nº 7721)
  • Tratamento de caso em que o caminho do módulo do Windows PowerShell já está no PSModulePath do ambiente (nº 7727)
  • Habilitação de cmdlets SecureString para sistemas diferentes do Windows pelo armazenamento do texto sem formatação (nº 9199)
  • Aprimoramento da mensagem de erro em sistemas diferentes do Windows ao importar clixml com securestring (nº 7997)
  • Adicionando o parâmetro ReplyTo a Send-MailMessage (#8727) (Obrigado, @replicaJunction!)
  • Adição da mensagem Obsoleto a Send-MailMessage (nº 9178)
  • Correção de Restart-Computer para funcionar no localhost quando WinRM não estiver presente (nº 9160)
  • Fazer Start-Job lançar um erro de encerramento quando o PowerShell estiver sendo hospedado (nº 9128)
  • Adicionar aceleradores de tipo de estilo C# e sufixos para literais ushort, uint, ulong e short (#7813) (Obrigado, @vexx32!)
  • Adicionados novos sufixos para literais numéricos – consulte about_Numeric_Literals (#7901) (Obrigado @vexx32!)
  • Relatar corretamente o nível de impacto quando SupportsShouldProcess não estiver definido como 'true' (#8209) (Obrigado @vexx32!)
  • Corrigir problemas de conjunto de caracteres de solicitação em cmdlets da Web (#8742) (Obrigado @markekraus!)
  • Correção do problema De esperar 100-continue com cmdlets da Web (#8679) (Obrigado, @markekraus!)
  • Corrigir o problema de bloqueio de arquivo com cmdlets da Web (#7676) (Obrigado, @Claustn!)
  • Corrigir o problema de análise de página de código em Invoke-RestMethod (#8694) (Obrigado, @markekraus!)
  • Refatoração de ConvertTo-Json para exposição de JsonObject.ConvertToJson como uma API pública (nº 8682)
  • Adicionar profundidade máxima configurável em ConvertFrom-Json com -Depth (#8199) (Obrigado @louistio!)
  • Adicionar o parâmetro EscapeHandling no ConvertTo-Json cmdlet (#7775) (Obrigado, @iSazonov!)
  • Adição de -CustomPipeName a pwsh e Enter-PSHostProcess (nº 8889)
  • Habilitação da criação de links simbólicos relativos no Windows com New-Item (nº 8783)
  • Permissão para que usuários do Windows no modo de desenvolvedor criem links simbólicos sem elevação (nº 8534)
  • Habilitação de Write-Information para aceitar $null (nº 8774)
  • Correção de Get-Help para funções avançadas com conteúdo de ajuda MAML (nº 8353)
  • Correção Get-Help do problema PSTypeName com -Parameter quando apenas um parâmetro é declarado (#8754) (Obrigado @pougetat!)
  • Correção do cálculo do token para Get-Help executado em ScriptBlock para ajuda de comentário. (#8238) (Obrigado, @hubuk!)
  • Alterar Get-Help o parâmetro cmdlet -Parameter para que ele aceite matrizes de cadeia de caracteres (#8454) (Obrigado, @sethvs!)
  • Resolver PAGER se seu caminho contiver espaços (#8571) (Obrigado, @pougetat!)
  • Adição de prompt ao uso de less na função 'help' para orientar o usuário sobre como encerrar (nº 7998)
  • Adicionar tipos de enumeração de suporte e char no Format-Hex cmdlet (#8191) (Obrigado, @iSazonov!)
  • Remoção de ShouldProcess de Format-Hex (nº 8178)
  • Adicione novos parâmetros Offset e Count a Format-Hex e refatore o cmdlet (#7877) (Obrigado, @iSazonov!)
  • Permitir 'name' como uma chave de alias para 'label' no ConvertTo-Html, permita que a entrada 'width' seja um inteiro (#8426) (Obrigado @mklement0!)
  • Fazer com que as propriedades calculadas baseadas em scriptblock funcionem novamente em ConvertTo-Html (#8427) (Obrigado, @mklement0!)
  • Adicionar cmdlet Join-String para criar texto com base na entrada do pipeline (#7660) (Obrigado, @powercode!)
  • Corrigir Join-String a lógica do parâmetro FormatString do cmdlet (#8449) (Obrigado, @sethvs!)
  • Alteração de Clear-Host para usar $RAWUI e liberação para trabalhar por comunicação remota (nº 8609)
  • Alteração de Clear-Host para a chamada simples de [console]::clear e remoção do alias de limpeza do Unix (nº 8603)
  • Corrigir LiteralPath em Import-Csv para associar à Get-ChildItem saída (#8277) (Obrigado @iSazonov!)
  • A função de ajuda não deve usar pager para AliasHelpInfo (nº 8552)
  • Adicionar -UseMinimalHeader a Start-Transcript para minimizar o cabeçalho da transcrição (#8402) (Obrigado @lukexjeremy!)
  • Adição dos cmdlets Enable-ExperimentalFeature e Disable-ExperimentalFeature (nº 8318)
  • Exposição de todos os cmdlets de PSDiagnostics se logman.exe estiver disponível (nº 8366)
  • Remover o parâmetro Persist da New-PSDrivenon-Windows plataforma (#8291) (Obrigado @lukexjeremy!)
  • Adicionar suporte para cd + (#7206) (Obrigado, @bergmeister!)
  • Habilitação de Set-Location -LiteralPath para trabalhar com pastas chamadas - e + (nº 8089)
  • Test-Path retorna $false quando dado um valor vazio ou $null de caminho (#8080) (Obrigado @vexx32!)
  • Permissão para que o parâmetro dinâmico seja retornado mesmo se o caminho não corresponder a qualquer provedor (nº 7957)
  • Suporte a Get-PSHostProcessInfo e Enter-PSHostProcess em plataformas Unix (nº 8232)
  • Reduzir alocações no Get-Content cmdlet (#8103) (Obrigado @iSazonov!)
  • Habilitação de Add-Content para compartilhar acesso de leitura com outras ferramentas durante a gravação de conteúdo (nº 8091)
  • Get/Add-Content lança um erro aprimorado ao direcionar um contêiner (#7823) (Obrigado @kvprasoon!)
  • Adicionar -Nameparâmetros e -NoUserOverrides-ListAvailable ao Get-Culture cmdlet (#7702) (Obrigado, @iSazonov!)
  • Adição de atributo unificado para preenchimento do parâmetro Encoding. (#7732) (Obrigado, @ThreeFive-O!)
  • Permitir IDs numéricas e nome de páginas de código registradas em Parâmetros de codificação (#7636) (Obrigado @iSazonov!)
  • Correção Rename-Item -Path com caractere curinga (#7398) (Obrigado @kwkam!)
  • Ao usar Start-Transcript e o arquivo existe, o arquivo vazio em vez de excluir (#8131) (Obrigado, @paalbra!)
  • Tornar Add-Type código aberto arquivos com FileAccess.Read e FileShare.Read explicitamente (#7915) (Obrigado@IISResetMe!)
  • Correção de Enter-PSSession -ContainerId para o Windows mais recente (nº 7883)
  • Garantia de que a propriedade NestedModules seja preenchida por Test-ModuleManifest (nº 7859)
  • Adicionar %F maiúsculas e minúsculas a Get-Date -UFormat (#7630) (Obrigado, @britishben!)
  • Correção Set-Service -Status Stopped para interromper serviços com dependências (#5525) (Obrigado @zhenggu!)