Compartilhar via


Novidades no PowerShell Core 6.2

A versão PowerShell Core 6.2 focou em melhorias de desempenho, correções de bugs e melhorias menores em cmdlets e linguagem que melhoram a qualidade. Para ver a lista completa de melhorias, confira nossos changelogs detalhados no GitHub.

Recursos experimentais

Anteriormente, habilitávamos suporte para Recursos Experimentais. No lançamento 6.2, temos quatro recursos experimentais para testar. Por favor, forneça feedback para que possamos fazer melhorias e decidir se o recurso vale a pena ser promovido ao status mainstream.

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

Sugestões de comando não encontrado

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

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Example

Neste exemplo, o nome do cmdlet com erro de ortografia é difuso com várias sugestões de mais provável para menos provável.

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.

Agrupamento remoto implícito

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

Com esse recurso, o PowerShell analisa o pipeline para determinar se o comando é seguro para executar e se ele existe no sistema alvo. Quando é verdade, o PowerShell executa todo o pipeline remotamente e só serializa e de-serializes os resultados retornam ao cliente.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Um teste real de Get-Process | Sort-Object overlocalhost diminui de 10-15 segundos para 20-30 milissegundos. O recurso só precisa ser ativado no cliente. Nenhuma alteração é necessária no servidor.

Tração temporária

Enable-ExperimentalFeature -Name PSTempDrive

Se você está usando o PowerShell Core em diferentes sistemas operacionais, vai perceber que a variável de ambiente para encontrar o diretório temporário é diferente no Windows, macOS e Linux! Com esse recurso, você recebe uma chamada Temp:PSDrive que é automaticamente mapeada para a pasta temporária do sistema operacional que você está usando.

Example

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

Fique atento que comandos nativos de arquivo (como ls no Linux) não conhecem PSDrives e não vão ver esse Temp: disco.

Expansão de Abreviações

Espera-se que os cmdlets do PowerShell tenham substantivos descritivos. Isso resulta em nomes longos que são mais difíceis de digitar. Esse recurso permite que você digite os caracteres maiúsculos do cmdlet e use o tab complete para encontrar uma correspondência.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Example

PS> i-arsavsf

Se você apertar tab e tiver o módulo Azure PowerShell Az instalado, ele irá autocompletar para:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Observação

Esse recurso é destinado a ser usado de forma interativa. Formas abreviadas de cmdlets não podem ser executadas. Esse recurso não substitui os apelidos.

Alterações de quebra

  • Corrija -NoEnumerate o comportamento para Write-Output ser consistente com o PowerShell do Windows. (#9069)
  • Faça 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 frações de segundo (#8537) (Obrigado @Prototyyppi!)
  • Mude a hashtable para usar OrdinalIgnoreCase para estar case-insensitive em todas as Culturas (#8566)
  • Corrigir o LiteralPath para Import-Csv vincular à Get-ChildItem saída (#8277) (Obrigado @iSazonov!)
  • Não pula mais uma coluna sem nome se o delimitador de aspas duplas for usado em Import-Csv (#7899) (Obrigado @Topping!)
  • Get-ExperimentalFeature Não tem -ListAvailable mais Switch (#8318)
  • O parâmetro de depuração agora é definido $DebugPreference como Continue em vez de Inquire (#8195) (Obrigado @KirkMunro!)
  • Honra -OutputFormat , se especificado, em comando não interativo, redirecionado, codificado usado com pwsh (#8115)
  • Carregue o conjunto a partir do caminho da base do módulo antes de tentar carregar a partir do GAC (#8073)
  • Remover tilde dos pacotes de pré-visualização do Linux (#8244)
  • Processamento de movimento antes -WorkingDirectory do processamento de perfis (#8079)
  • Não adicione PATHEXT variável de ambiente no Unix (#7697) (Obrigado @iSazonov!)

Problemas conhecidos

  • O remoto, nas plataformas Windows IOT ARM, apresenta um problema ao carregar módulos. Veja (#8053)

Atualizações e correções gerais

  • Ativar a completação de abas insensíveis a maiúsculas minúsculas para arquivos e pastas no sistema de arquivos sensível a maiúsculas minúsculas (#8128)
  • Torne público o PSVersionInfo.PSVersion e o PSVersionInfo.PSEdition (#8054) (Obrigado @KirkMunro!)
  • Inferência de Tipo de Adicionar para $_ / $PSItem blocos in catch{ } (#8020) (Obrigado @vexx32!)
  • Corrigir inferência estática de tipo de invocação de método (#8018) (Obrigado @SeeminglyScience!)
  • Crie tipos inferidos para Select-Object, Group-Object, PSObject e Hashtable (#7231) (Obrigado @powercode!)
  • Método de chamada de suporte com ByRef-like parâmetros de tipo (#7721)
  • Lidar com o caso em que o caminho do módulo PowerShell do Windows já está no PSModulePath do ambiente (#7727)
  • Ative SecureString os cmdlets para não-Windows armazenando o texto simples (#9199)
  • Melhorar a mensagem de erro em não-Windows ao importar clixml com securestring (#7997)
  • Adicionando o parâmetro RespondiTo a Send-MailMessage (#8727) (Obrigado @replicaJunction!)
  • Adicionar mensagem Obsoleta a Send-MailMessage (#9178)
  • Correção Restart-Computer para funcionar localhost quando o WinRM não estiver presente (#9160)
  • Erro de Start-Job terminação de lançamento quando o PowerShell está sendo hospedado (#9128)
  • Adicione aceleradores e sufixos no estilo C# para ushort, uint, ulong e short literals (#7813) (Obrigado @vexx32!)
  • Adicionados novos sufixos para literais numéricos - veja about_Numeric_Literals (#7901) (Obrigado @vexx32!)
  • Reporte corretamente o nível de impacto quando o SupportsShouldProcess não estiver configurado como 'verdadeiro' (#8209) (Obrigado @vexx32!)
  • Problemas com Pedidos de Correção de Charsets em Web Cmdlets (#8742) (Obrigado @markekraus!)
  • Correção Espere 100-continue problema com Web Cmdlets (#8679) (Obrigado @markekraus!)
  • Corrigir problema de bloqueio de arquivos com webcommandlets (#7676) (Obrigado @Claustn!)
  • Corrigir o problema de análise da página de código em Invoke-RestMethod (#8694) (Obrigado @markekraus!)
  • Refactore ConvertTo-Json para expor JsonObject.ConvertToJson como uma API pública (#8682)
  • Adicione profundidade máxima configurável com ConvertFrom-Json -Depth (#8199) (Obrigado @louistio!)
  • Adicionar o parâmetro EscapeHandling no ConvertTo-Json cmdlet (#7775) (Obrigado @iSazonov!)
  • Adicionar -CustomPipeName ao pwsh e Enter-PSHostProcess (#8889)
  • Ative a criação de links simbólicos relativos no Windows com New-Item (#8783)
  • Permitir que usuários do Windows no modo desenvolvedor criem links simbólicos sem elevação (#8534)
  • Permitir Write-Information aceitar $null (#8774)
  • Correção Get-Help para funções avançadas com conteúdo de ajuda MAML (#8353)
  • Corrija Get-Help o problema do PSTypeName com -Parameter quando apenas um parâmetro é declarado (#8754) (Obrigado @pougetat!)
  • Correção do cálculo de tokens para Get-Help executada no ScriptBlock para ajuda com comentários. (#8238) (Obrigado @hubuk!)
  • Mude Get-Help o parâmetro do cmdlet -Parameter para que aceite arrays de string (#8454) (Obrigado @sethvs!)
  • Resolva o PAGER se seu caminho contiver espaços (#8571) (Obrigado @pougetat!)
  • Adicionar um prompt ao uso de less na função 'help' para instruir o usuário a sair (#7998)
  • Adicione os tipos de suporte enum e personagem no Format-Hex cmdlet (#8191) (Obrigado @iSazonov!)
  • Remover ShouldProcess de Format-Hex (#8178)
  • Adicionar novos parâmetros de Offset e Count e Format-Hex refatorar o cmdlet (#7877) (Obrigado @iSazonov!)
  • Permita 'name' como chave de alias para 'label' em ConvertTo-Html, permita que a entrada 'width' seja um inteiro (#8426) (Obrigado @mklement0!)
  • Faça propriedades calculadas baseadas em blocos de script funcionarem novamente em ConvertTo-Html (#8427) (Obrigado @mklement0!)
  • Adicionar um cmdlet Join-String para criar texto a partir da entrada do pipeline (#7660) (Obrigado @powercode!)
  • Fix Join-String cmdlet FormatString parameter logic (#8449) (Obrigado @sethvs!)
  • Voltar Clear-Host a usar $RAWUI e liberar para trabalhar sobre remotos (#8609)
  • Mudar Clear-Host para simplesmente chamado [console]::clear e remover o alias claro do Unix (#8603)
  • Corrigir o LiteralPath para Import-Csv vincular à Get-ChildItem saída (#8277) (Obrigado @iSazonov!)
  • a função de ajuda não deveria usar pager para AliasHelpInfo (#8552)
  • Adicionar -UseMinimalHeader a para Start-Transcript minimizar o cabeçalho da transcrição (#8402) (Obrigado @lukexjeremy!)
  • Adicionar Enable-ExperimentalFeature e Disable-ExperimentalFeature cmdlets (#8318)
  • Expor todos os cmdlets dos PSDiagnostics se logman.exe estiver disponível (#8366)
  • Remover o parâmetro Persist da New-PSDrivenon-Windows plataforma (#8291) (Obrigado @lukexjeremy!)
  • Adicionar suporte para cd + (#7206) (Obrigado @bergmeister!)
  • Habilitar Set-Location -LiteralPath para trabalhar com pastas nomeadas - e + (#8089)
  • Test-Path retorna $false quando recebido um valor vazio ou $null path (#8080) (Obrigado @vexx32!)
  • Permitir que o parâmetro dinâmico seja retornado mesmo que o caminho não corresponda a nenhum provedor (#7957)
  • Suporte Get-PSHostProcessInfo e Enter-PSHostProcess em plataformas Unix (#8232)
  • Reduzir alocações no Get-Content cmdlet (#8103) (Obrigado @iSazonov!)
  • Permitir Add-Content o compartilhamento do acesso à leitura com outras ferramentas enquanto escreve conteúdo (#8091)
  • Get/Add-Content lança erro melhorado ao mirar em um contêiner (#7823) (Obrigado @kvprasoon!)
  • Adicionar -Name, -NoUserOverrides e -ListAvailable parâmetros ao Get-Culture cmdlet (#7702) (Obrigado @iSazonov!)
  • Adicione o atributo unificado para completamento do parâmetro de codificação . (#7732) (Obrigado @ThreeFive-O!)
  • Permitir IDs numéricos e nome de páginas de código registradas nos parâmetros de codificação (#7636) (Obrigado @iSazonov!)
  • Correção Rename-Item -Path com personagem coringa (#7398) (Obrigado @kwkam!)
  • Quando existe um Start-Transcript arquivo que existe, arquivo vazio em vez de excluir (#8131) (Obrigado @paalbra!)
  • Crie Add-Type arquivos open source com FileAccess.Read e FileShare.Read explicitamente (#7915) (Obrigado @IISResetMe!)
  • Correção Enter-PSSession -ContainerId para o Windows mais recente (#7883)
  • Garantir que a propriedade NestedModules seja preenchida por Test-ModuleManifest (#7859)
  • Adicionar %F case à Get-Date -UFormat (#7630) (Obrigado @britishben!)
  • Fix Set-Service -Status Stopped to stop services with dependies (#5525) (Obrigado @zhenggu!)