Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Projetado para ambientes de nuvem, locais e híbridos, o PowerShell 7 é repleto de aprimoramentos e novos recursos.
- Instala e executa lado a lado com o Windows PowerShell
- Compatibilidade aprimorada com módulos existentes do Windows PowerShell
- Novos recursos de linguagem, como operadores ternários e
ForEach-Object -Parallel
- Desempenho aprimorado
- Comunicação remota baseada em SSH
- Interoperabilidade entre plataformas
- Suporte para contêineres do Docker
O PowerShell 7 funciona lado a lado com o Windows PowerShell, permitindo que você teste e compare facilmente entre edições antes da implantação. A migração é simples, rápida e segura.
Há suporte para o PowerShell 7 nos seguintes sistemas operacionais Windows:
- Windows 10 e 11
- Windows Server 2016, 2019 e 2022
O PowerShell 7 também é executado no macOS e em várias distribuições do Linux. Para obter uma lista de sistemas operacionais com suporte e informações sobre o ciclo de vida de suporte, consulte o PowerShell Support Lifecycle.
Instalando o PowerShell 7
Para flexibilidade e para dar suporte às necessidades de TI, engenheiros de DevOps e desenvolvedores, há várias opções disponíveis para instalar o PowerShell 7. Na maioria dos casos, as opções de instalação podem ser reduzidas aos seguintes métodos:
Nota
O pacote MSI pode ser implantado e atualizado com produtos de gerenciamento, como do Microsoft Configuration Manager. Baixe os pacotes na página de lançamento do GitHub .
A implantação do pacote MSI requer permissão de administrador. O pacote ZIP pode ser implantado por qualquer usuário. O pacote ZIP é a maneira mais fácil de instalar o PowerShell 7 para teste, antes de se comprometer com uma instalação completa.
Você também pode instalar o PowerShell 7 por meio da Windows Store ou winget
. Para obter mais informações sobre esses dois métodos, consulte as instruções detalhadas em Instalando o PowerShell no Windows.
Usando o PowerShell 7 lado a lado com o Windows PowerShell 5.1
O PowerShell 7 foi projetado para coexistir com o Windows PowerShell 5.1. Os recursos a seguir garantem que seu investimento no PowerShell esteja protegido e sua migração para o PowerShell 7 seja simples.
- Caminho de instalação e nome do executável separados
- PSModulePath separado
- Perfis separados para cada versão
- Compatibilidade aprimorada do módulo
- Novos pontos de extremidade de comunicação remota
- Suporte à política de grupo
- Logs de eventos separados
Diferenças nas versões do .NET
O PowerShell 7.4 é criado no .NET 8.0. O Windows PowerShell 5.1 é criado no .NET Framework 4.x. As diferenças entre as versões do .NET podem afetar o comportamento de seus scripts, especialmente se você estiver chamando o método .NET diretamente. Para mais informações, veja Diferenças entre Windows PowerShell 5.1 e PowerShell 7.x.
Caminho de instalação e nome do executável separados
O PowerShell 7 é instalado em um novo diretório, permitindo a execução lado a lado com o Windows PowerShell 5.1.
Locais de instalação por versão:
- Windows PowerShell 5.1:
$Env:windir\System32\WindowsPowerShell\v1.0
- PowerShell 6.x:
$Env:ProgramFiles\PowerShell\6
- PowerShell 7:
$Env:ProgramFiles\PowerShell\7
O novo local é adicionado ao SEU PATH, permitindo que você execute o Windows PowerShell 5.1 e o PowerShell 7. Se você estiver migrando do PowerShell 6.x para o PowerShell 7, o PowerShell 6 será removido e o PATH será substituído.
No Windows PowerShell, o executável do PowerShell é nomeado powershell.exe
. Na versão 6 e superior, o executável é nomeado pwsh.exe
. O novo nome facilita o suporte à execução lado a lado de ambas as versões.
PSModulePath separado
Por padrão, o Windows PowerShell e o PowerShell 7 armazenam módulos em locais diferentes. O PowerShell 7 combina esses locais na variável de ambiente $Env:PSModulePath
. Ao importar um módulo por nome, o PowerShell verifica o local especificado por $Env:PSModulePath
. Isso permite que o PowerShell 7 carregue os módulos Core e Desktop.
Escopo da instalação | Windows PowerShell 5.1 | PowerShell 7.0 |
---|---|---|
Módulos do PowerShell | $Env:windir\system32\WindowsPowerShell\v1.0\Modules |
$Env:ProgramFiles\PowerShell\7\Modules |
Instalado pelo usuário Escopo dos AllUsers |
$Env:ProgramFiles\WindowsPowerShell\Modules |
$Env:ProgramFiles\PowerShell\Modules |
Instalado pelo usuário Escopo CurrentUser |
$HOME\Documents\WindowsPowerShell\Modules |
$HOME\Documents\PowerShell\Modules |
Os exemplos a seguir mostram os valores padrão de $Env:PSModulePath
para cada versão.
Para o Windows PowerShell 5.1:
$Env:PSModulePath -split (';')
C:\Users\<user>\Documents\WindowsPowerShell\Modules C:\Program Files\WindowsPowerShell\Modules C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
Para o PowerShell 7:
$Env:PSModulePath -split (';')
C:\Users\<user>\Documents\PowerShell\Modules C:\Program Files\PowerShell\Modules C:\Program Files\PowerShell\7\Modules C:\Program Files\WindowsPowerShell\Modules C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
Observe que o PowerShell 7 inclui os caminhos do Windows PowerShell e os caminhos do PowerShell 7 para fornecer o carregamento automático de módulos.
Nota
Caminhos adicionais poderão existir se você tiver alterado a variável de ambiente PSModulePath ou instalado módulos ou aplicativos personalizados.
Para obter mais informações, consulte about_PSModulePath.
Para obter mais informações sobre módulos, consulte about_Modules.
Perfis separados
Um perfil do PowerShell é um script que é executado quando o PowerShell é iniciado. Esse script personaliza seu ambiente adicionando comandos, aliases, funções, variáveis, módulos e unidades do PowerShell. O script de perfil disponibiliza essas personalizações em todas as sessões sem precisar recriá-las manualmente.
O caminho para o local do perfil foi alterado no PowerShell 7.
- No Windows PowerShell 5.1, o local do perfil é
$HOME\Documents\WindowsPowerShell
. - No PowerShell 7, o local do perfil é
$HOME\Documents\PowerShell
.
Os nomes de arquivo de perfil também foram alterados:
$PROFILE | Select-Object *Host* | Format-List
AllUsersAllHosts : C:\Program Files\PowerShell\7\profile.ps1
AllUsersCurrentHost : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : C:\Users\<user>\Documents\PowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Confira mais informações em about_Profiles.
Compatibilidade do PowerShell 7 com módulos do Windows PowerShell 5.1
A maioria dos módulos usados no Windows PowerShell 5.1 já funciona com o PowerShell 7, incluindo o Azure PowerShell e o Active Directory. Continuamos trabalhando com outras equipes para adicionar suporte nativo do PowerShell 7 para mais módulos, incluindo Microsoft Graph, Office 365 e outros. Para obter a lista atual de módulos com suporte, consulte a compatibilidade de módulos do PowerShell 7 em .
Nota
No Windows, também adicionamos a opção UseWindowsPowerShell para Import-Module
para facilitar a transição para o PowerShell 7 para aqueles que usam módulos incompatíveis. Para obter mais informações sobre essa funcionalidade, consulte about_Windows_PowerShell_Compatibility.
Comunicação remota do PowerShell
A comunicação remota do PowerShell permite executar qualquer comando do PowerShell em um ou mais computadores remotos. Você pode estabelecer conexões persistentes, iniciar sessões interativas e executar scripts em computadores remotos.
Comunicação remota do WS-Management
O Windows PowerShell 5.1 e abaixo usam o protocolo WS-Management (WSMAN) para negociação de conexão e transporte de dados. O WinRM (Gerenciamento Remoto do Windows) usa o protocolo WSMAN. Se o WinRM estiver habilitado, o PowerShell 7 usará o ponto de extremidade existente do Windows PowerShell 5.1 chamado Microsoft.PowerShell
para conexões de comunicação remota. Para atualizar o PowerShell 7 para incluir seu próprio endpoint, execute o cmdlet Enable-PSRemoting
. Para obter informações sobre como se conectar aos pontos de extremidade específicos, consulte Comunicação Remota de Gerenciamento do WS no PowerShell
Para usar a comunicação remota do Windows PowerShell, o computador remoto deve ser configurado para gerenciamento remoto. Para obter mais informações, incluindo instruções, consulte Sobre requisitos remotos.
Para obter mais informações sobre como trabalhar com comunicação remota, consulte Sobre comunicação remota
Comunicação remota baseada em SSH
A comunicação remota baseada em SSH foi adicionada ao PowerShell 6.x para dar suporte a outros sistemas operacionais que não podem usar componentes nativos do Windows, como winrm. A comunicação remota do SSH cria um processo de hospedagem do PowerShell no computador de destino como um subsistema SSH. Confira detalhes e exemplos sobre como configurar a comunicação remota baseada em SSH no Windows ou no Linux em: Comunicação remota do PowerShell por SSH.
Nota
A Galeria do PowerShell (PSGallery) contém um módulo e um cmdlet que configura automaticamente a comunicação remota baseada em SSH. Instale o módulo
Os cmdlets New-PSSession
, Enter-PSSession
e Invoke-Command
têm novos conjuntos de parâmetros para dar suporte a conexões SSH.
[-HostName <string>] [-UserName <string>] [-KeyFilePath <string>]
Para criar uma sessão remota, especifique o computador de destino com o parâmetro HostName e forneça o nome de usuário com UserName. Ao executar os cmdlets interativamente, você recebe uma solicitação de senha.
Enter-PSSession -HostName <Computer> -UserName <Username>
Como alternativa, ao usar o parâmetro HostName, forneça as informações de nome de usuário seguidas pelo sinal (@
), seguido pelo nome do computador.
Enter-PSSession -HostName <Username>@<Computer>
Você pode configurar a autenticação de chave SSH usando um arquivo de chave privada com o parâmetro
Política de Grupo com suporte
O PowerShell inclui configurações de Política de Grupo para ajudá-lo a definir valores de opção consistentes para servidores em um ambiente empresarial. Essas configurações incluem:
- Configuração da sessão do console: define um ponto de extremidade de configuração no qual o PowerShell é executado.
- Ativar o log do módulo: define a propriedade LogPipelineExecutionDetails dos módulos.
- Ativar o log de blocos de script do PowerShell: habilita o log detalhado de todos os scripts do PowerShell.
- Ativar a Execução de Script: define a política de execução do PowerShell.
- Ative a Transcrição do PowerShell: habilita a captura de entrada e saída de comandos do PowerShell em transcrições baseadas em texto.
- Defina o caminho de origem padrão para a Atualização-Ajuda: define a origem da Ajuda Atualizável para um diretório, não para a Internet.
Confira mais informações em about_Group_Policy_Settings.
O PowerShell 7 inclui modelos de Política de Grupo e um script de instalação no $PSHOME
.
As ferramentas de Política de Grupo usam arquivos de modelo administrativo (.admx
, .adml
) para preencher as configurações de política na interface do usuário. Isso permite que os administradores gerenciem as configurações de política baseadas em registro. O script InstallPSCorePolicyDefinitions.ps1
instala modelos administrativos do PowerShell no computador local.
Get-ChildItem -Path $PSHOME -Filter *Core*Policy*
Directory: C:\Program Files\PowerShell\7
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/27/2020 12:38 AM 15861 InstallPSCorePolicyDefinitions.ps1
-a--- 2/27/2020 12:28 AM 9675 PowerShellCoreExecutionPolicy.adml
-a--- 2/27/2020 12:28 AM 6201 PowerShellCoreExecutionPolicy.admx
Logs de Eventos Separados
Windows PowerShell e PowerShell 7 registram eventos em logs de eventos separados. Use o comando a seguir para obter uma lista dos logs do PowerShell.
Get-WinEvent -ListLog *PowerShell*
Para obter mais informações, consulte about_Logging_Windows.
Experiência de edição aprimorada com o Visual Studio Code
O Vs Code (Visual Studio Code) com a Extensão do PowerShell é o ambiente de script com suporte para o PowerShell 7. O ISE (Ambiente de Script Integrado) do Windows PowerShell dá suporte apenas ao Windows PowerShell.
A extensão atualizada do PowerShell inclui:
- Novo modo de compatibilidade do ISE
- PSReadLine no Console Integrado, incluindo realce de sintaxe, edição de várias linhas e pesquisa de retorno
- Melhorias de estabilidade e desempenho
- Nova integração do CodeLens
- Preenchimento automático de caminho aprimorado
Para facilitar a transição para o Visual Studio Code, use a função Habilitar modo ISE disponível na paleta de comandos . Essa função alterna o VS Code para um layout no estilo ISE. O layout no estilo ISE oferece todos os novos recursos e funcionalidades do PowerShell em uma experiência de usuário familiar.
Para alternar para o novo layout do ISE, pressione Ctrl+Shift+P para abrir a paleta de comandos , digite PowerShell
e selecione PowerShell: Habilitar o modo ISE.
Para definir o layout como o layout original, abra a Paleta de Comandos, selecione PowerShell: Desabilitar o modo ISE (restaurar para padrões).
Para obter detalhes sobre como personalizar o layout do VS Code para ISE, consulte Como replicar a experiência ISE no Visual Studio Code
Nota
Não há planos para atualizar o ISE com novos recursos. Nas versões mais recentes do Windows 10 ou Windows Server 2019 e superior, o ISE agora é um recurso desinstalável pelo usuário. Não há planos para remover permanentemente o ISE. A equipe do PowerShell e seus parceiros estão focados em melhorar a experiência de script na extensão do PowerShell para Visual Studio Code.
Próximas etapas
Munido do conhecimento para migrar com eficiência, instale o PowerShell 7 agora!