Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 comunitárias e incluem várias melhorias e correções. Estamos comprometidos em garantir que o PowerShell continue a ser uma plataforma estável e de desempenho.
O PowerShell 7.1 inclui as seguintes funcionalidades, atualizações e alterações urgentes.
- PSReadLine 2.1.0, que inclui o IntelliSense Preditivo
- O PowerShell 7.1 foi publicado na Microsoft Store
- Pacotes de instalação atualizados para novas versões do sistema operativo com suporte para ARM64
- 4 novas funcionalidades experimentais e 2 funcionalidades experimentais promovidas ao mainstream
- Várias alterações urgentes para melhorar a usabilidade
Para obter uma lista completa das alterações, consulte o CHANGELOG no repositório GitHub.
PSReadLine 2.1.0
O PowerShell 7.1 também inclui o PSReadLine 2.1.0. Esta versão inclui o IntelliSense Preditivo. Para mais informações sobre a funcionalidade Predictive IntelliSense, consulte o anúncio no blogue PowerShell.
Pacote de instalação da Microsoft Store
O PowerShell 7.1 foi publicado na Microsoft Store. Pode encontrar a versão PowerShell no site da Microsoft Store ou na aplicação Store no Windows.
Benefícios do pacote da Microsoft Store:
- Atualizações automáticas incorporadas no Windows
- Integra-se com outros mecanismos de distribuição de software como Intune e SCCM
Observação
Quaisquer definições de configuração ao nível do sistema armazenadas $PSHOME não podem ser modificadas. Isso inclui a configuração WSMAN. Isso impede que sessões remotas se conectem a instalações do PowerShell baseadas em Loja. Configurações de nível de usuário e comunicação remota SSH são suportadas.
Outros instaladores
Para mais informações up-todatas sobre sistemas operativos suportados e ciclo de vida de suporte, consulte o Ciclo de Vida de Suporte PowerShell.
Consulte as instruções de instalação do seu sistema operativo preferido:
Além disso, o PowerShell 7.1 suporta versões ARM32 e ARM64 de Debian, Ubuntu e ARM64 Alpine Linux.
Embora não seja oficialmente suportado, a comunidade também forneceu pacotes para Arch e Kali Linux.
Observação
Debian 10+, CentOS 8+, Ubuntu 20.04, Alpine e Arm atualmente não suportam remotição do WinRM. Para detalhes sobre como configurar remotos baseados em SSH, veja PowerShell Remoting over SSH.
Características experimentais
Para obter mais informações sobre os recursos experimentais, consulte Usando recursos experimentais.
As seguintes funcionalidades experimentais são agora funcionalidades mainstream nesta versão:
As seguintes funcionalidades experimentais foram adicionadas nesta versão:
Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace
- O PowerShell 7.1 estende esta funcionalidade experimental para adicionar o parâmetro Runspace a todos
*-PSBreakpointos cmdlets. O parâmetro de espaço de execução especifica que um objeto de espaço de execução interage com pontos de interação no espaço de execução especificado.
- O PowerShell 7.1 estende esta funcionalidade experimental para adicionar o parâmetro Runspace a todos
PSNativePSPathResolution - Esta funcionalidade permite-lhe passar caminhos do fornecedor PowerShell para comandos nativos que não suportam a sintaxe do caminho PowerShell.
PSCultureInvariantReplaceOperator - Quando o operando da esquerda numa
-replaceinstrução de operador não é uma cadeia, esse operando é convertido numa cadeia. Com a funcionalidade ativada, a conversão não utiliza as definições de Cultura para conversão de strings.PSSubsystemPluginModel lança as bases para suportar futuros plug-ins IntelliSense Preditivos.
Mudanças e Melhorias Recentes
O comportamento de comparação de strings alterado no .NET 5.0
O PowerShell 7.1 é construído em .NET 5.0, que introduziu a seguinte alteração de grande impacto:
A partir do .NET 5.0, as comparações de cadeias invariantes de cultura ignoram caracteres de controlo que não imprimem.
Por exemplo, as seguintes duas cadeias são consideradas idênticas:
# Escape sequence "`a" is Ctrl-G or [char]7 'Food' -eq "Foo`ad"TrueCorreção
$?para não estar$falsequando o comando nativo escreve emstderr(#13395)É comum que comandos nativos escrevam sem
stderrintenção de indicar uma falha. Com esta alteração$?, é definido apenas$falsequando o comando nativo também tem um código de saída diferente de zero. Esta alteração não está relacionada com a característicaPSNotApplyErrorActionToStderrexperimental .Não
$ErrorActionPreferenceafetestderra saída dos comandos nativos (#13361)É comum que comandos nativos escrevam sem
stderrintenção de indicar uma falha. Com esta alteração,stderra saída continua a ser capturada em objetos ErrorRecord , mas o tempo de execução já não se aplica$ErrorActionPreferencese o ErrorRecord vier de um comando nativo.Renomear
-FromUnixTimepara-UnixTimeSecondsOnGet-Datepara permitir a entrada de tempo Unix (#13084) (Obrigado @aetos382!)O
-FromUnixTimeparâmetro foi adicionado durante o 7.1-preview.2. O parâmetro foi renomeado para melhor corresponder ao tipo de dado. Este parâmetro assume 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 AMPermitir que o parâmetro nomeado explicitamente especificado substitua o mesmo do splatting de hashtable (#13162)
Com esta alteração, os parâmetros nomeados do splatting são movidos para o final da lista de parâmetros para que fiquem ligados depois de todos os parâmetros nomeados explicitamente especificados estarem ligados. A ligação de parâmetros para funções simples não gera erro quando um parâmetro nomeado especificado não pode ser encontrado. Parâmetros nomeados desconhecidos estão ligados ao
$argsparâmetro da função simples. Mover o splatting para o final da lista de argumentos altera a ordem em que os parâmetros aparecem em$args.Por exemplo:
function SimpleTest { param( $Name, $Path ) "Name: $Name; Path: $Path; Args: $args" }No comportamento anterior, MyPath não está vinculado porque
-Pathé o terceiro argumento na lista de argumentos. ## Por isso acaba por ser enfiado em '$args' juntamente comBlah = "World"PS> $hash = @{ Name = "Hello"; Blah = "World" } PS> SimpleTest @hash "MyPath" Name: Hello; Path: ; Args: -Blah: World MyPathCom esta alteração, os argumentos de
@hashsão movidos para o final da lista de argumentos. MyPath torna-se o primeiro argumento da lista, por isso está vinculado a-Path.PS> SimpleTest @hash "MyPath" Name: Hello; Path: MyPath; Args: -Blah: WorldFaz com que o parâmetro
-Qualifierdo switch não seja posicional paraSplit-Path(#12960) (Obrigado @yecril71pl!)Resolve o diretório de trabalho como caminho literal para
Start-Processquando não está especificado (#11946) (Obrigado @NoMoreFood!)Faz com que
-OutFileos parâmetros nos web cmdlets funcionem como-LiteralPath(#11701) (Obrigado @iSazonov!)Corrigir a ligação de parâmetros de string para
BigIntegerliterais numéricos (#11634) (Obrigado @vexx32!)No Windows,
Start-Processcria um ambiente de processo com todas as variáveis de ambiente da sessão atual, usando-UseNewEnvironmentcria um novo ambiente de processo predefinido (#10830) (Obrigado @iSazonov!)Não envolver o resultado de retorno ao
PSObjectconverter aScriptBlockpara um delegado (#10619)Quando a
ScriptBlocké convertido num tipo delegado para ser usado no contexto C#, envolver o resultado em aPSObjecttraz problemas desnecessários:- Quando o valor é convertido para o tipo de retorno de delegado, o
PSObjectessencialmente é desembrulhado. Portanto, nãoPSObjecté necessário. - Quando o tipo de retorno de delegado é
object, é enrolado em aPSObject, tornando difícil trabalhar com ele em código C#.
Após esta alteração, o objeto devolvido é o objeto subjacente.
- Quando o valor é convertido para o tipo de retorno de delegado, o