Partilhar via


Novidades no PowerShell Core 6.2

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

Funcionalidades Experimentais

Anteriormente, ativemos o suporte para Funcionalidades Experimentais. No lançamento 6.2, temos quatro funcionalidades experimentais para experimentar. Envie comentários para que possamos fazer melhorias e decidir se a funcionalidade vale a pena promover para o estado base.

Utilize 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 possa ter escrito incorretamente.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Exemplo

Neste exemplo, o nome do cmdlet com erro ortográfico corresponde a várias sugestões, do mais provável ao 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.

Criação de Batches Remotas Implícita

Ao utilizar comunicação remota implícita num pipeline, o PowerShell trata cada comando no pipeline de forma independente. Os objetos são serializados repetidamente 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 ser executado e se existe no sistema de destino. Quando verdadeiro, o PowerShell executa todo o pipeline remotamente e apenas serializa e de-serializes os resultados para o cliente.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

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

Unidade Temporária

Enable-ExperimentalFeature -Name PSTempDrive

Se estiver a utilizar o PowerShell Core em sistemas operativos diferentes, irá descobrir que a variável de ambiente para localizar o diretório temporário é diferente no Windows, macOS e Linux! Com esta funcionalidade, obtém um PSDrive chamado Temp: que é mapeado automaticamente para a pasta temporária do sistema operativo que está a utilizar.

Exemplo

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

Tenha em atenção que os comandos de ficheiro nativos (como ls no Linux) não têm conhecimento do PSDrives e não verão esta Temp: unidade.

Expansão da Abreviatura

Espera-se que os cmdlets do PowerShell tenham substantivos descritivos. Isto resulta em nomes longos que são mais difíceis de escrever. Esta funcionalidade permite-lhe apenas escrever os carateres em maiúsculas do cmdlet e utilizar a conclusão do separador para encontrar uma correspondência.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Exemplo

PS> i-arsavsf

Se aceder ao separador e tiver o Azure PowerShell módulo do Az instalado, este será concluído automaticamente para:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Nota

Esta funcionalidade destina-se a ser utilizada interativamente. Não é possível executar formas abreviadas de cmdlets. Esta funcionalidade não substitui os aliases.

Alterações Interruptivas

  • Corrija o -NoEnumerate comportamento em Write-Output para ser consistente com Windows PowerShell. (#9069)
  • Tornar o Join-String -InputObject 1,2,3 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!)
  • Altere a tabela hash para utilizar OrdinalIgnoreCase para estar case-insensitive em todas as Culturas (#8566)
  • Corrigir LiteralPath no Import-Csv para vincular à Get-ChildItem saída (#8277) (Obrigado @iSazonov!)
  • Já não ignora uma coluna sem nome se for utilizado um delimitador de aspas duplas no Import-Csv (#7899) (Obrigado @Topping!)
  • Get-ExperimentalFeature já não tem -ListAvailable parâmetro (#8318)
  • O parâmetro de depuração está agora definido $DebugPreference como Continuar em vez de Inquire (#8195) (Obrigado) @KirkMunro!)
  • Respeitar -OutputFormat se especificado no comando não interativo, redirecionado e codificado utilizado com pwsh (#8115)
  • Carregar a assemblagem a partir do caminho base do módulo antes de tentar carregar a partir do GAC (#8073)
  • Remover til dos pacotes de pré-visualização do Linux (#8244)
  • Mover o processamento de antes do -WorkingDirectory processamento de perfis (#8079)
  • Não adicione a PATHEXT variável de ambiente no Unix (#7697) (Obrigado @iSazonov!)

Problemas Conhecidos

  • A comunicação remota em plataformas ARM IOT do Windows tem um problema ao carregar módulos. Consulte (#8053)

Atualizações e Correções Gerais

  • Ativar a conclusão de separadores não sensíveis a maiúsculas e minúsculas para ficheiros e pastas no sistema de ficheiros sensível a maiúsculas e minúsculas (#8128)
  • Tornar públicas PSVersionInfo.PSVersion e PSVersionInfo.PSEdition (#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 do método estático (#8018) (Obrigado @SeeminglyScience!)
  • Create 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)
  • Processe o caso em que o caminho do módulo Windows PowerShell já se encontra no PSModulePath do ambiente (#7727)
  • Ativar SecureString cmdlets para não Windows ao armazenar o texto simples (#9199)
  • Melhorar a mensagem de erro em não Windows ao importar clixml com securestring (#7997)
  • Adicionar o parâmetro ReplyTo a Send-MailMessage (#8727) (Obrigado) @replicaJunction!)
  • Adicionar mensagem obsoleta a Send-MailMessage (#9178)
  • Correção Restart-Computer para trabalhar localhost quando o WinRM não está presente (#9160)
  • Erro de Start-Job terminação de lançamento quando o PowerShell está a ser alojado (#9128)
  • Adicionar aceleradores e sufixos de tipo de estilo C# para ushort, uint, ulong e literais curtos (#7813) (Obrigado @vexx32!)
  • Foram adicionados novos sufixos para literais numéricos – consulte about_Numeric_Literals (#7901) (Obrigado) @vexx32!)
  • Comunicar corretamente o nível de impacto quando SupportsShouldProcess não está definido como "verdadeiro" (#8209) (Obrigado @vexx32!)
  • Corrigir Problemas de Conjunto de Carateres do Pedido nos Cmdlets Web (#8742) (Obrigado) @markekraus!)
  • Corrigir o problema Expect 100-continue com Cmdlets Web (#8679) (Obrigado) @markekraus!)
  • Corrigir problema de bloqueio de ficheiros com cmdlets Web (#7676) (Obrigado) @Claustn!)
  • Corrigir o problema de análise de páginas de código no Invoke-RestMethod (#8694) (Obrigado) @markekraus!)
  • Refatorizar ConvertTo-Json para expor JsonObject.ConvertToJson como uma API pública (#8682)
  • Adicionar profundidade máxima configurável em ConvertFrom-Json com -Depth (#8199) (Obrigado) @louistio!)
  • Adicionar parâmetro EscapeHandling no ConvertTo-Json cmdlet (#7775) (Obrigado @iSazonov!)
  • Adicionar -CustomPipeName a pwsh e Enter-PSHostProcess (#8889)
  • Ativar a criação de ligações simbólicas relativas no Windows com New-Item (#8783)
  • Permitir que os utilizadores do Windows no modo de programador criem symlinks sem elevação (#8534)
  • Ativar Write-Information para aceitar $null (#8774)
  • Correção Get-Help para funções avançadas com conteúdo de ajuda MAML (#8353)
  • Corrigir Get-Help o problema PSTypeName com -Parameter quando apenas um parâmetro é declarado (#8754) (Obrigado) @pougetat!)
  • Correção do cálculo do token para Get-Help executado no ScriptBlock para obter ajuda para comentários. (#8238) (Obrigado @hubuk!)
  • Altere Get-Help o cmdlet -Parâmetro para que aceite matrizes de cadeias (#8454) (Obrigado) @sethvs!)
  • Resolver PAGER se o caminho contiver espaços (#8571) (Obrigado) @pougetat!)
  • Adicione um pedido à utilização de less na função "help" para instruir o utilizador a sair (#7998)
  • Adicionar tipos de carateres e enumeração de suporte no Format-Hex cmdlet (#8191) (Obrigado) @iSazonov!)
  • Remover ShouldProcess do Format-Hex (#8178)
  • Adicione novos parâmetros Offset e Count e Format-Hex refatorize o cmdlet (#7877) (Obrigado) @iSazonov!)
  • Permitir "nome" como chave de alias para "etiqueta" no ConvertTo-Html, permitir que a entrada "largura" seja um número inteiro (#8426) (Obrigado @mklement0!)
  • Fazer com que as propriedades calculadas baseadas no scriptblock voltem a funcionar no ConvertTo-Html (#8427) (Obrigado) @mklement0!)
  • Adicionar cmdlet Join-String para criar texto a partir da entrada do pipeline (#7660) (Obrigado @powercode!)
  • Corrigir Join-String a lógica do parâmetro FormatString do cmdlet (#8449) (Obrigado @sethvs!)
  • Mude Clear-Host novamente para utilizar $RAWUI e desmarque para trabalhar em comunicação remota (#8609)
  • Altere Clear-Host para simplesmente chamado [console]::clear e remova o alias desmarcado do Unix (#8603)
  • Corrigir LiteralPath no Import-Csv para vincular à Get-ChildItem saída (#8277) (Obrigado @iSazonov!)
  • A função help não deve utilizar o pager para AliasHelpInfo (#8552)
  • Adicionar -UseMinimalHeader a Start-Transcript para minimizar o cabeçalho de transcrição (#8402) (Obrigado @lukexjeremy!)
  • Adicionar Enable-ExperimentalFeature e Disable-ExperimentalFeature cmdlets (#8318)
  • Expor todos os cmdlets do PSDiagnostics se logman.exe estiver disponível (#8366)
  • Remover o parâmetro Persistir da New-PSDrivenon-Windows plataforma (#8291) (Obrigado @lukexjeremy!)
  • Adicionar suporte para cd + (#7206) (Obrigado) @bergmeister!)
  • Ativar Set-Location -LiteralPath para trabalhar com pastas denominadas - e + (#8089)
  • Test-Path devolve $false quando é fornecido um valor vazio ou $null de caminho (#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!)
  • Ativar Add-Content para partilhar o acesso de leitura com outras ferramentas ao escrever conteúdo (#8091)
  • Get/Add-Content gera um erro melhorado ao filtrar um contentor (#7823) (Obrigado @kvprasoon!)
  • Adicionar -Nameparâmetros -NoUserOverrides e -ListAvailable ao Get-Culture cmdlet (#7702) (Obrigado) @iSazonov!)
  • Adicione um atributo unificado para conclusão para o parâmetro Encoding . (#7732) (Obrigado @ThreeFive-O!)
  • Permitir IDs numéricos e o nome de páginas de código registadas em Parâmetros de codificação (#7636) (Obrigado @iSazonov!)
  • Correção Rename-Item -Path com caráter universal (#7398) (Obrigado @kwkam!)
  • Quando a utilização Start-Transcript e o ficheiro existem, o ficheiro está vazio em vez de eliminar (#8131) (Obrigado) @paalbra!)
  • Criar Add-Type open source ficheiros com FileAccess.Read e FileShare.Read explicitamente (#7915) (Obrigado)@IISResetMe!)
  • Correção Enter-PSSession -ContainerId para o Windows mais recente (#7883)
  • Certifique-se de que a propriedade NestedModules é preenchida por Test-ModuleManifest (#7859)
  • Adicionar %F maiúsculas/minúsculas a Get-Date -UFormat (#7630) (Obrigado) @britishben!)
  • Correção Set-Service -Status Stopped para parar os serviços com dependências (#5525) (Obrigado @zhenggu!)