Novidades no PowerShell 7.1
A 11 de novembro de 2020 , anunciámos a disponibilidade geral do PowerShell 7.1. Com base na base estabelecida no PowerShell 7.0, os nossos esforços focaram-se em questões da comunidade e incluem uma série de melhorias e correções. Estamos empenhados em garantir que o PowerShell continua a ser uma plataforma estável e de desempenho.
O PowerShell 7.1 inclui as seguintes funcionalidades, atualizações e alterações interruptivas.
- PSReadLine 2.1.0, que inclui o Predictive IntelliSense
- O PowerShell 7.1 foi publicado na Microsoft Store
- Pacotes do instalador atualizados para novas versões do SO com suporte para ARM64
- 4 novas funcionalidades experimentais e 2 funcionalidades experimentais promovidas para o mainstream
- Várias alterações interruptivas para melhorar a usabilidade
Para obter uma lista completa das alterações, veja CHANGELOG no repositório do GitHub.
PSReadLine 2.1.0
O PowerShell 7.1 também inclui o PSReadLine 2.1.0. Esta versão inclui o Predictive IntelliSense. Para obter mais informações sobre a funcionalidade Predictive IntelliSense, veja o anúncio no blogue do PowerShell.
Pacote do instalador da Microsoft Store
O PowerShell 7.1 foi publicado na Microsoft Store. Pode encontrar a versão do PowerShell no site da Microsoft Store ou na aplicação Loja no Windows.
Benefícios do pacote da Microsoft Store:
- Atualizações automáticas incorporadas diretamente no Windows
- Integra-se com outros mecanismos de distribuição de software, como Intune e SCCM
Nota
As definições de configuração ao nível do sistema armazenadas no $PSHOME
não podem ser modificadas. Isto inclui a configuração WSMAN. Isto impede que as sessões remotas se liguem às instalações baseadas na Loja do PowerShell. As configurações ao nível do utilizador e a comunicação remota SSH são suportadas.
Outros instaladores
Para obter informações mais atualizadas sobre os sistemas operativos suportados e o ciclo de vida do suporte, veja o Ciclo de Vida do Suporte do PowerShell.
Verifique as instruções de instalação do seu sistema operativo preferencial:
Além disso, o PowerShell 7.1 suporta os tipos ARM32 e ARM64 de Debian, Ubuntu e ARM64 Alpine Linux.
Embora não seja oficialmente suportada, a comunidade também forneceu pacotes para Arch e Kali Linux.
Nota
Debian 10+, CentOS 8+, Ubuntu 20.04, Alpine e Arm atualmente não suportam a comunicação remota winRM. Para obter detalhes sobre como configurar a comunicação remota baseada em SSH, veja PowerShell Remoting over SSH (Comunicação Remota do PowerShell através de SSH).
Funcionalidades Experimentais
Para obter mais informações sobre as Funcionalidades Experimentais, consulte Utilizar Funcionalidades Experimentais.
As seguintes funcionalidades experimentais são agora funcionalidades principais nesta versão:
As seguintes funcionalidades experimentais foram adicionadas nesta versão:
Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace
- O PowerShell 7.1 expande esta funcionalidade experimental para adicionar o parâmetro Runspace a todos os
*-PSBreakpoint
cmdlets. O parâmetro Runspace especifica um objeto Runspace para interagir com pontos de interrupção no espaço de execução especificado.
- O PowerShell 7.1 expande esta funcionalidade experimental para adicionar o parâmetro Runspace a todos os
PSNativePSPathResolution – esta funcionalidade permite-lhe transmitir caminhos do fornecedor do PowerShell para comandos nativos que não suportam a sintaxe do caminho do PowerShell.
PSCultureInvariantReplaceOperator – quando o operando esquerdo numa
-replace
instrução de operador não é uma cadeia, esse operando é convertido numa cadeia. Com a funcionalidade ativada, a conversão não utiliza definições de Cultura para conversão de cadeias de carateres.O PSSubsystemPluginModel estabelece as bases para suportar futuros plug-ins Predictive IntelliSense.
Alterações e Melhorias Interruptivas
Comportamento de comparação de cadeias alterado no .NET 5.0
O PowerShell 7.1 baseia-se no .NET 5.0, que introduziu a seguinte alteração interruptiva:
A partir do .NET 5.0, as comparações de cadeias invariantes de cultura ignoram carateres de controlo não imprimíveis.
Por exemplo, as duas cadeias seguintes são consideradas idênticas:
# Escape sequence "`a" is Ctrl-G or [char]7 'Food' -eq "Foo`ad"
True
Correção
$?
para não ser$false
quando o comando nativo escreve emstderr
(#13395)É comum os comandos nativos escreverem
stderr
em sem ter a intenção de indicar uma falha. Com esta alteração$?
está definida como$false
apenas quando o comando nativo também tem um código de saída diferente de zero. Esta alteração não está relacionada com a funcionalidadePSNotApplyErrorActionToStderr
experimental .Não
$ErrorActionPreference
afetar astderr
saída dos comandos nativos (#13361)É comum os comandos nativos escreverem
stderr
em sem ter a intenção de indicar uma falha. Com esta alteração,stderr
a saída ainda é capturada em objetos ErrorRecord , mas o runtime já não se aplica$ErrorActionPreference
se o ErrorRecord for proveniente de um comando nativo.Mude o nome
-FromUnixTime
para-UnixTimeSeconds
ativadoGet-Date
para permitir a introdução de tempo Unix (#13084) (Obrigado @aetos382!)O
-FromUnixTime
parâmetro foi adicionado durante 7.1-preview.2. O nome do parâmetro foi mudado para corresponder melhor ao tipo de dados. Este parâmetro utiliza um valor inteiro que representa em segundos desde 1 de janeiro de 1970, 0:00:00.Este exemplo converte uma hora Unix (representada pelo número de segundos desde 1970-01-01 0:00:00) em DateTime.
Get-Date -UnixTimeSeconds 1577836800 Wednesday, January 01, 2020 12:00:00 AM
Permitir que o parâmetro nomeado especificado explicitamente substitua o mesmo de splatting hashtable (#13162)
Com esta alteração, os parâmetros nomeados do splatting são movidos para o fim da lista de parâmetros para que fiquem vinculados depois de todos os parâmetros nomeados explicitamente especificados estarem vinculados. O enlace de parâmetros para funções simples não gera um erro quando não é possível localizar um parâmetro nomeado especificado. Os parâmetros nomeados desconhecidos estão vinculados ao
$args
parâmetro da função simples. Mover o splatting para o fim da lista de argumentos altera a ordem pela qual os parâmetros são apresentados em$args
.Por exemplo:
function SimpleTest { param( $Name, $Path ) "Name: $Name; Path: $Path; Args: $args" }
No comportamento anterior, o MyPath não está vinculado porque
-Path
é o terceiro argumento na lista de argumentos. ## Então acaba sendo enfiado em '$args' juntamente comBlah = "World"
PS> $hash = @{ Name = "Hello"; Blah = "World" } PS> SimpleTest @hash "MyPath" Name: Hello; Path: ; Args: -Blah: World MyPath
Com esta alteração, os argumentos de
@hash
são movidos para o fim da lista de argumentos. O MyPath torna-se o primeiro argumento na lista, pelo que está vinculado a-Path
.PS> SimpleTest @hash "MyPath" Name: Hello; Path: MyPath; Args: -Blah: World
Tornar o parâmetro
-Qualifier
switch não posicional paraSplit-Path
(#12960) (Obrigado @yecril71pl!)Resolver o diretório de trabalho como um caminho literal para
Start-Process
quando não for especificado (#11946) (Obrigado @NoMoreFood!)Faça
-OutFile
com que o parâmetro nos cmdlets Web funcione como-LiteralPath
(#11701) (Obrigado) @iSazonov!)Corrigir o enlace do parâmetro de cadeia para
BigInteger
literais numéricos (#11634) (Obrigado @vexx32!)No Windows,
Start-Process
cria um ambiente de processo com todas as variáveis de ambiente da sessão atual, utilizando-UseNewEnvironment
cria um novo ambiente de processo predefinido (#10830) (Obrigado @iSazonov!)Não moldar o resultado da devolução ao
PSObject
converter umScriptBlock
num delegado (#10619)Quando um
ScriptBlock
é convertido num tipo de delegado para ser utilizado no contexto C#, encapsular o resultado numPSObject
traz problemas desnecessários:- Quando o valor é convertido para o tipo de retorno delegado, é
PSObject
essencialmente desembrulhado. Então oPSObject
é desnecessário. - Quando o tipo de devolução do delegado é
object
, este é moldado numaPSObject
opção que dificulta o trabalho no código C#.
Após esta alteração, o objeto devolvido é o objeto subjacente.
- Quando o valor é convertido para o tipo de retorno delegado, é