Partilhar via


Novidades no PowerShell Core 6.2

A versão PowerShell Core 6.2 focou-se em melhorias de desempenho, correções de bugs e melhorias de cmdlet e linguagem mais pequenas que melhoram a qualidade. Para ver a lista completa de melhorias, consulte os nossos registos de alterações detalhados no GitHub.

Características experimentais

Anteriormente, ativamos o suporte para Funcionalidades Experimentais. Na versão 6.2, temos quatro funcionalidades experimentais para experimentar. Por favor, dê feedback para que possamos fazer melhorias e para decidir se a funcionalidade merece ser promovida para um estatuto mainstream.

Use Get-ExperimentalFeature para obter uma lista de funcionalidades experimentais disponíveis. Pode ativar ou desativar estas funcionalidades com Enable-ExperimentalFeature e Disable-ExperimentalFeature.

Sugestões de comando não encontrado

Esta funcionalidade utiliza correspondência difusa para encontrar sugestões de comandos ou cmdlets que possas ter escrito mal.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Example

Neste exemplo, o nome do cmdlet mal escrito é 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 utilizar remoção implícita num 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 esta funcionalidade, 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 apenas serializa e de-serializes os resultados devem ao cliente.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Um teste real de Get-Process | Sort-Object overlocalhost diminui de 10-15 segundos para 20-30 milissegundos. A funcionalidade só precisa de estar ativada no cliente. Não são necessárias alterações no servidor.

Provisório temporário

Enable-ExperimentalFeature -Name PSTempDrive

Se estiveres a usar o PowerShell Core em diferentes sistemas operativos, vais descobrir que a variável de ambiente para encontrar o diretório temporário é diferente no Windows, macOS e Linux! Com esta funcionalidade, recebes uma chamada Temp:PSDrive que é automaticamente mapeada para a pasta temporária do sistema operativo que estás a usar.

Example

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

Tem em atenção que os comandos nativos de ficheiros (como ls no Linux) não conhecem o PSDrives e não vão ver este Temp: disco.

Expansão de Abreviaturas

Espera-se que os cmdlets do PowerShell tenham substantivos descritivos. Isto resulta em nomes longos e mais difíceis de escrever. Esta funcionalidade permite-lhe simplesmente digitar os caracteres maiúsculos do cmdlet e usar a completação de tabulação para encontrar uma correspondência.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Example

PS> i-arsavsf

Se carregar no tab e tiver instalado o módulo Azure PowerShell Az , ele irá autocompletar para:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Observação

Esta funcionalidade destina-se a ser usada de forma interativa. Formas abreviadas de cmdlets não podem ser executadas. Esta funcionalidade não substitui os pseudónimos.

Alterações Disruptivas

  • Corrigir -NoEnumerate o comportamento para Write-Output ser consistente com o PowerShell do Windows. (#9069)
  • Torna 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!)
  • Alterar a hashtable para usar OrdinalIgnoreCase para estar case-insensitive em todas as Culturas (#8566)
  • Corrigir o LiteralPath para Import-Csv ligar à Get-ChildItem saída (#8277) (Obrigado @iSazonov!)
  • Já não salta uma coluna sem nome se for usado o delimitador de aspas duplas em Import-Csv (#7899) (Obrigado @Topping!)
  • Get-ExperimentalFeature já não tem -ListAvailable switch (#8318)
  • O parâmetro de depuração agora é definido $DebugPreference para Continuar em vez de Inquire (#8195) (Obrigado @KirkMunro!)
  • Honra -OutputFormat se especificado em comando codificado, redirecionado e não interativo, usado com pwsh (#8115)
  • Carregar 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 para Linux (#8244)
  • Processamento de mover antes -WorkingDirectory do processamento dos perfis (#8079)
  • Não adicione PATHEXT variável de ambiente no Unix (#7697) (Obrigado @iSazonov!)

Problemas conhecidos

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

Atualizações Gerais e Correções

  • Ativar a conclusão de separadores insensíveis a maiúsculas minúsculas para ficheiros e pastas no sistema de ficheiros sensível a maiúsculas minúsculas (#8128)
  • Tornar 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 de tipo de invocação de método estático (#8018) (Obrigado @SeeminglyScience!)
  • Criar 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)
  • Tratar do 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)
  • Adicionar parâmetro ReplyTo a Send-MailMessage (#8727) (Obrigado @replicaJunction!)
  • Adicionar mensagem Obsoleta a Send-MailMessage (#9178)
  • Correção Restart-Computer a trabalhar localhost quando o WinRM não estiver presente (#9160)
  • Erro de terminação do Start-Job throw quando o PowerShell está hospedado (#9128)
  • Adicione aceleradores e sufixos ao estilo C# para ushort, uint, ulong e short literals (#7813) (Obrigado @vexx32!)
  • Adicionados novos sufixos para literais numéricos - ver about_Numeric_Literals (#7901) (Obrigado @vexx32!)
  • Reporte corretamente o nível de impacto quando o SupportsShouldProcess não estiver definido como 'verdadeiro' (#8209) (Obrigado @vexx32!)
  • Problemas com o Pedido de Correção de Caracteres nos Web Cmdlets (#8742) (Obrigado @markekraus!)
  • Corrigir Esperar 100-continue problema com Web Cmdlets (#8679) (Obrigado @markekraus!)
  • Corrigir o problema de bloqueio de ficheiros com os web cmdlets (#7676) (Obrigado @Claustn!)
  • Corrigir o problema de análise da página de código em Invoke-RestMethod (#8694) (Obrigado @markekraus!)
  • Refatorar ConvertTo-Json para expor JsonObject.ConvertToJson como API pública (#8682)
  • Adicione profundidade ConvertFrom-Json máxima configurável com -Depth (#8199) (Obrigado @louistio!)
  • Adicionar o parâmetro EscapeHandling no ConvertTo-Json cmdlet (#7775) (Obrigado @iSazonov!)
  • Adicionar -CustomPipeName a pwsh e Enter-PSHostProcess (#8889)
  • Permitir a criação de ligações simbólicas relativas no Windows com New-Item (#8783)
  • Permitir que utilizadores Windows em modo desenvolvedor criem links simbólicos sem elevação (#8534)
  • Permitir Write-Information aceitação $null (#8774)
  • Correção Get-Help para funções avançadas com conteúdo de ajuda MAML (#8353)
  • Corrigir Get-Help o problema do nome PSTypeName com -Parameter quando apenas um parâmetro é declarado (#8754) (Obrigado @pougetat!)
  • Correção do cálculo do token para Get-Help executar no ScriptBlock para ajuda com comentários. (#8238) (Obrigado @hubuk!)
  • Alterar Get-Help o parâmetro do cmdlet -Parameter para aceitar arrays de string (#8454) (Obrigado @sethvs!)
  • Resolve PAGER se o seu caminho contiver espaços (#8571) (Obrigado @pougetat!)
  • Adicionar um prompt ao uso de less na função 'help' para instruir o utilizador a sair (#7998)
  • Adicionar suporte enum e tipos de 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!)
  • Fazer com que propriedades calculadas baseadas em blocos de script funcionem 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 limpar para trabalhar sobre remotos (#8609)
  • Alterar Clear-Host para chamada [console]::clear simples e remover o alias limpo do Unix (#8603)
  • Corrigir o LiteralPath para Import-Csv ligar à Get-ChildItem saída (#8277) (Obrigado @iSazonov!)
  • a função de ajuda não deve usar pager para AliasHelpInfo (#8552)
  • Adicionar -UseMinimalHeader a Start-Transcript para minimizar o cabeçalho da transcrição (#8402) (Obrigado @lukexjeremy!)
  • Add 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!)
  • Permitir Set-Location -LiteralPath trabalhar com pastas nomeadas - e + (#8089)
  • Test-Path retorna $false quando dado um valor vazio ou $null path (#8080) (Obrigado @vexx32!)
  • Permitir que o parâmetro dinâmico seja devolvido mesmo que o caminho não corresponda a nenhum fornecedor (#7957)
  • Suporte Get-PSHostProcessInfo e Enter-PSHostProcess em plataformas Unix (#8232)
  • Reduzir as alocações no Get-Content cmdlet (#8103) (Obrigado @iSazonov!)
  • Permitir Add-Content partilhar o acesso de leitura com outras ferramentas enquanto escreve conteúdo (#8091)
  • Get/Add-Content lança erro melhorado ao apontar a um contentor (#7823) (Obrigado @kvprasoon!)
  • Adicionar -Nameos parâmetros de , -NoUserOverrides e -ListAvailable ao Get-Culture cmdlet (#7702) (Obrigado @iSazonov!)
  • Adicionar um atributo unificado para completar o parâmetro de codificação . (#7732) (Obrigado @ThreeFive-O!)
  • Permitir IDs numéricos e nome das páginas de códigos registadas 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 ficheiro, o ficheiro vazio em vez de o apagar (#8131) (Obrigado @paalbra!)
  • Crie Add-Type ficheiros 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 é preenchida por Test-ModuleManifest (#7859)
  • Adicionar %F capa à Get-Date -UFormat (#7630) (Obrigado @britishben!)
  • Correção Set-Service -Status Stopped para parar serviços com dependências (#5525) (Obrigado @zhenggu!)