Migrando do Windows PowerShell 5.1 para o PowerShell 7
Artigo
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:
Implantar o PowerShell usando o pacote MSI
Implantar o PowerShell usando o pacote ZIP
Observação
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.
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:
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 .
Observação
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 de modo que inclua seu próprio ponto de extremidade, execute o cmdlet Enable-PSRemoting. Confira mais informações sobre como se conectar a pontos de extremidade específicos em Comunicação remota do WS-Management 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.
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 de 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.
Observação
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 do PSGallery e execute o cmdlet .
Os cmdlets New-PSSession, Enter-PSSessione Invoke-Command têm novos conjuntos de parâmetros para dar suporte a conexões SSH.
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.
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 KeyFilePath.
Para obter mais informações, consulte o Gerenciamento de Chaves do OpenSSH.
Política de Grupo compatível
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 Registro em 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.
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.
Experiência de edição aprimorada com o Visual Studio Code
O VSCode (Visual Studio Code) com a Extensão do PowerShell é o ambiente de script compatível com 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 . Esta função muda o VSCode para um layout semelhante ao 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 para o original, abra a Paleta de Comandos, selecione PowerShell: Desabilitar o Modo ISE (restaurar padrões) .
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.
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.
Comentários do PowerShell
O PowerShell é um projeto código aberto. Selecione um link para fornecer comentários:
Como administrador híbrido do Windows Server, você integra ambientes do Windows Server aos serviços do Azure e gerencia o Windows Server em redes locais.