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 emWrite-Output
para ser consistente com Windows PowerShell. (#9069) - Tornar o
Join-String -InputObject 1,2,3
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!) - 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
emcatch{ }
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 trabalharlocalhost
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 eEnter-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
aStart-Transcript
para minimizar o cabeçalho de transcrição (#8402) (Obrigado @lukexjeremy!) - Adicionar
Enable-ExperimentalFeature
eDisable-ExperimentalFeature
cmdlets (#8318) - Expor todos os cmdlets do PSDiagnostics se logman.exe estiver disponível (#8366)
- Remover o parâmetro Persistir da
New-PSDrive
non-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
eEnter-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
-Name
parâmetros-NoUserOverrides
e-ListAvailable
aoGet-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 aGet-Date
-UFormat (#7630) (Obrigado) @britishben!) - Correção
Set-Service -Status Stopped
para parar os serviços com dependências (#5525) (Obrigado @zhenggu!)