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.
Projetado para ambientes de nuvem, locais e híbridos, o PowerShell 7 está 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 linguísticos, como operadores ternários e
ForEach-Object -Parallel
- Desempenho melhorado
- Remotização baseada em SSH
- Interoperabilidade entre plataformas
- Suporte para contêineres 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.
O PowerShell 7 é suportado 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 Linux. Para obter uma lista de sistemas operacionais suportados e informações sobre o ciclo de vida do suporte, consulte o PowerShell Support Lifecycle.
Instalando o PowerShell 7
Para flexibilidade e 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:
Observação
O pacote MSI pode ser implantado e atualizado com produtos de gerenciamento, como Microsoft Configuration Manager. Baixe os pacotes partir da 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 que sua migração para o PowerShell 7 seja simples.
- Separar caminho de instalação do nome do executável
- PSModulePath separado
- Perfis separados para cada versão
- Compatibilidade melhorada dos módulos
- Novos pontos finais de comunicação remota
- Suporte à política de grupo
- Logs de eventos separados
Diferenças nas versões do .NET
O PowerShell 7.4 é baseado no .NET 8.0. O Windows PowerShell 5.1 é baseado 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 obter mais informações, Diferenças entre o Windows PowerShell 5.1 e o PowerShell 7.x.
Separar caminho de instalação e nome do executável
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 substituído.
No Windows PowerShell, o executável do PowerShell é chamado 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 $Env:PSModulePath
ambiente. Ao importar um módulo pelo nome, o PowerShell verifica o local especificado pelo $Env:PSModulePath
. Isso permite que o PowerShell 7 carregue os módulos Core e Desktop.
Instalar Escopo | 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 utilizador Âmbito de aplicação de todos os utilizadores |
$Env:ProgramFiles\WindowsPowerShell\Modules |
$Env:ProgramFiles\PowerShell\Modules |
Instalado pelo utilizador Alcance do UtilizadorAtual |
$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 carregamento automático de módulos.
Observação
Caminhos adicionais podem 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.
- Em Windows PowerShell 5.1, o local do perfil é
$HOME\Documents\WindowsPowerShell
. - No PowerShell 7, o local do perfil é
$HOME\Documents\PowerShell
.
Os nomes dos arquivos 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
Para mais informações, 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 Ative Directory. Continuamos a trabalhar com outras equipes para adicionar suporte nativo ao PowerShell 7 para mais módulos, incluindo Microsoft Graph, Office 365 e outros. Para obter a lista atual de módulos suportados, consulte a compatibilidade de módulos do PowerShell 7 .
Observação
No Windows, também adicionamos um UseWindowsPowerShell alternar 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.
WS-Management comunicação remota
O Windows PowerShell 5.1 e versões posteriores usam o protocolo WS-Management (WSMAN) para negociação de conexão e transporte de dados. O Gerenciamento Remoto do Windows (WinRM) usa o protocolo WSMAN. Se o WinRM tiver sido habilitado, o PowerShell 7 usará o ponto de extremidade existente do Windows PowerShell 5.1 chamado Microsoft.PowerShell
para conexões remotas. Para atualizar o PowerShell 7 para incluir o seu próprio endpoint, execute o cmdlet Enable-PSRemoting
. Para obter informações sobre como se conectar a pontos de extremidade específicos, consulte WS-Management comunicação remota 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 o Remote
Comunicação remota baseada em SSH
A comunicação remota baseada em SSH foi adicionada ao PowerShell 6.x para oferecer suporte a outros sistemas operacionais que não podem usar componentes nativos do Windows, como WinRM. A comunicação remota SSH cria um processo anfitrião do PowerShell no computador de destino como um subsistema SSH. Para obter detalhes e exemplos sobre como configurar a comunicação remota baseada em SSH no Windows ou Linux, consulte: comunicação remota do PowerShell sobre SSH.
Observação
A Galeria do PowerShell (PSGallery) contém um módulo e cmdlet que configura automaticamente a comunicação remota baseada em SSH. Instale o módulo Microsoft.PowerShell.RemotingTools
a partir do PSGallery do e execute o cmdlet Enable-SSH
.
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 ao nome de usuário UserName. Ao executar os cmdlets interativamente, será solicitada uma senha.
Enter-PSSession -HostName <Computer> -UserName <Username>
Como alternativa, ao usar o parâmetro HostName, forneça as informações do nome de usuário seguidas pelo sinal de arroba (@
), 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 KeyFilePath. Para obter mais informações, consulte de gerenciamento de chaves OpenSSH .
Política de Grupo suportada
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 corporativo. Essas configurações incluem:
- Configuração da sessão de console: define um ponto de extremidade de configuração no qual o PowerShell é executado.
- Ativar o Registo de Logs dos Módulos: define a propriedade LogPipelineExecutionDetails dos módulos.
- Ativar o Registo de Bloco de Scripts do PowerShell: ativa o registo detalhado de todos os scripts do PowerShell.
- Ativar Execução de Script: define a política de execução do PowerShell.
- Ativar a transcrição do PowerShell: permite capturar a entrada e a saída de comandos do PowerShell em transcrições baseadas em texto.
- Defina o caminho de origem padrão para Atualização da Ajuda: define a fonte da Ajuda atualizável como um diretório, e não a Internet.
Para obter mais informações, consulte 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 Diretiva de Grupo usam arquivos de modelo administrativo (.admx
, .adml
) para preencher as configurações de diretiva na interface do usuário. Isso permite que os administradores gerenciem configurações de diretiva baseadas no Registro. O script InstallPSCorePolicyDefinitions.ps1
instala os Modelos Administrativos do PowerShell na máquina 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 registam 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
Visual Studio Code (VSCode) com o PowerShell Extension é o ambiente de script com suporte para o PowerShell 7. O ISE (Ambiente de Script Integrado) do Windows PowerShell oferece suporte apenas ao Windows PowerShell.
A extensão atualizada do PowerShell inclui:
- Novo modo de compatibilidade ISE
- PSReadLine na consola integrada, incluindo realce de sintaxe, edição de várias linhas e pesquisa retroativa
- Melhorias na estabilidade e no desempenho
- Nova integração com CodeLens
- Preenchimento automático de caminho melhorado
Para facilitar a transição para o Visual Studio Code, utilize a função 'Ativar Modo ISE' disponível na 'Paleta de Comandos'. Esta função transforma o VSCode num layout ao estilo ISE. O layout no estilo ISE oferece todos os novos recursos e capacidades do PowerShell em uma experiência de usuário familiar.
Para alternar para o novo layout ISE, pressione Ctrl+Shift+P para abrir a Paleta de Comandos, digite PowerShell
e selecione PowerShell: Ativar Modo ISE.
Para definir o layout para a formatação original, abra a Paleta de Comandos, selecione PowerShell: Desativar o Modo ISE (restaurar para os padrões predefinidos).
Para obter detalhes sobre como personalizar o layout do VSCode para ISE, consulte Como replicar a experiência ISE no Visual Studio Code
Observação
Não há planos para atualizar o ISE com novos recursos. Nas versões mais recentes do Windows 10 ou Windows Server 2019 e superiores, o ISE agora é um recurso não instalá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óximos passos
Armado com o conhecimento para migrar efetivamente, instalar o PowerShell 7 agora!