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
emWrite-Output
para ser consistente com o Windows PowerShell. (nº 9069) - Tornar
Join-String -InputObject 1,2,3
o resultado igual ao1,2,3 | Join-String
resultado (#8611) (Obrigado @sethvs!) - Adicionar
-Stable
aSort-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
emcatch{ }
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 nolocalhost
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 eEnter-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
aStart-Transcript
para minimizar o cabeçalho da transcrição (#8402) (Obrigado @lukexjeremy!) - Adição dos cmdlets
Enable-ExperimentalFeature
eDisable-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-PSDrive
non-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
eEnter-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
-Name
parâmetros e-NoUserOverrides
-ListAvailable
aoGet-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 aGet-Date
-UFormat (#7630) (Obrigado, @britishben!) - Correção
Set-Service -Status Stopped
para interromper serviços com dependências (#5525) (Obrigado @zhenggu!)