Adam o Automador
p>Está pronto para fazer a sua actualização do PowerShell 7 e ter acesso a todas as novas funcionalidades? Se sim, este artigo é para si.
Quando o PowerShell 6 foi lançado, era para trazer uma versão básica do PowerShell a todas as plataformas (PowerShell Core). Com PowerShell 7 (que é a última versão PowerShell a partir deste artigo), procuramos agora que todas as plataformas sejam iguais no PowerShell que podem fornecer (tanto PowerShell para Windows como PowerShell Core).
Neste artigo, aprenderá como realizar uma actualização PowerShell 7 manualmente e como automatizar o processo de actualização com implementações em massa via GPO e PowerShell Remoting.
Na altura da redacção deste artigo, a versão actual do PowerShell 7 é Preview 3. A maioria das referências neste artigo aplicar-se-á a esta versão.
Table of Contents
Como actualizar a versão PowerShell numa máquina
Tal como o PowerShell Core 6.0, o processo de instalação do PowerShell Core 7 é semelhante. Vejamos algumas formas diferentes de instalar o PowerShell 7 numa única máquina.
Antes de irmos demasiado longe, vale a pena mencionar alguns pré-requisitos antes de instalar a versão 7 do PowerShell. Notará que estes são os mesmos requisitos que para PowerShell versão 6.
- O Universal C Runtime deve ser instalado
- Windows Management Framework (WMF) 4.0 ou mais recente – apenas se estiver numa versão do Windows 7 ou Windows Server 2008R2. Versão posterior do Windows como Windows 8.1, Windows 10 e Windows Server 2016, WMF não é necessário.
Instalação manual do PowerShell 7
P>Primeiro, descarregar PowerShell 7. Para o fazer, vá à página de lançamentos do GitHub para PowerShell e encontre a versão que pretende instalar. Para este artigo, estamos a utilizar a versão PowerShell 7.0.0 preview 3 release. No Windows, desça um pouco e descarregue o PowerShell-7.0.0-preview.3-pacote win-x86.msi MSI e execute-o.
>p> O assistente irá fazer-lhe algumas perguntas simples como onde quer que o PowerShell seja instalado. Se desejar executar múltiplas versões do PowerShell lado a lado, certifique-se de que utiliza pastas de instalação separadas.
O assistente irá também perguntar se deseja registar o PowerShell na variável de ambiente PATH
. Adicionar a pasta de instalação PowerShell à variável de ambiente PATH
permite chamar PowerShell a partir de qualquer outro terminal, tal como uma versão diferente de PowerShell ou mesmo cmd.exe.
Outra opção é Registar PowerShell no Manifesto de Registo de Eventos do Windows. Quando activada, esta opção tira partido do registo robusto que é enviado com esta versão do PowerShell.
P>Próximo, pergunta-lhe se gostaria de activar o PowerShell Remoting desde o início que pode ajudar em todas as tarefas remotas.
Finalmente, ser-lhe-á perguntado se gostaria de adicionar menus de contexto ‘Abrir Aqui’ ao Explorer. Esta opção permite-lhe clicar com o botão direito em qualquer pasta quando navega no Explorador do Windows e abrir uma janela PowerShell dentro desse directório de trabalho.
Embora os dois últimos sejam completamente opcionais e até si, recomendo vivamente que active os dois primeiros, desta forma:
Após ter respondido a todas as suas perguntas, clique em Next e a instalação começará.
Abrindo PowerShell 7
Once instalado, pode executar PowerShell 7 abrindo qualquer terminal de linha de comando e digitando pwsh-preview
.
Nota que não utilizará este nome de comando uma vez que a versão 7 do PowerShell esteja fora da fase de “pré-visualização”. Uma vez fora da fase de “preview”, poderá lançar PowerShell 7 com
pwsh
.
Instalar PowerShell 7 com PowerShell
O líder da equipa PowerShell da Microsoft, Steve Lee, tweeted uma maneira útil de instalar o PowerShell 7 usando o PowerShell Invoke-RestMethod
cmdlet. Este trecho de código utiliza o comando para consultar o repositório PowerShell GitHub, descarregar um script de instalação que depois descarrega e instala PowerShell 7 com uma única linha.
Below encontrará a sintaxe para o fazer. Abra uma consola PowerShell do Windows e execute a linha única abaixo.
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview"
Este trecho de código está a utilizar o PowerShell Invoke-Expression
cmdlet (iex
na linha única) para aceitar uma string e executá-la como código PowerShell. Esta string chama o Invoke-RestMethod
cmdlet (irm
no one-liner) para descarregar o script que Steve escreveu. Recomendo vivamente a utilização do link e a verificação do código por si mesmo antes de executar este comando!
O snippet passa então o UseMSI
e Preview
parâmetros para o script para agarrar e instalar o último MSI.
Se desejar executar este script completamente silencioso e desacompanhado, pode usar o parâmetro Quiet
. Na altura desta escrita, o parâmetro Preview
ainda aponta para PowerShell 7 Preview 3.
Instalar PowerShell 7 com um Módulo
Outra forma de instalar o PowerShell 7 é utilizando o módulo PowerShell de Jeff Hicks chamado PSReleaseTools. Este módulo, tal como o de Steve, ajuda a manter a sua versão PowerShell actualizada.
Com duas linhas do PowerShell, pode descarregar o módulo com Install-Module
e usando o comando Install-PSPreview
que vem com o módulo PSRelaseTools, pode ter o PowerShell 7 pré-instalado.
PS51> Install-Module -name PSReleaseTools -ForcePS51> Install-PSPreview -mode Quiet
Implementar o PowerShell 7 através de uma Organização
Há algumas opções quando se trata de implementar o PowerShell 7 à escala. Vejamos duas formas comuns de o fazer.
Implementar o PowerShell 7 com uma GPO
PowerShell é fácil de implementar via GPO uma vez que se presta facilmente a outras tecnologias Microsoft enquanto é empacotado como um MSI. Quando implementar isto via GPO, há algumas coisas de que vai querer estar ciente.
Usar uma GPO baseada em computador
P>Primeiro certifique-se de usar uma política baseada em computador e não uma política baseada em utilizador. Pode ler mais sobre as diferenças entre estas duas políticas aqui. Nos servidores, na maioria das vezes, os utilizadores não estão a iniciar a sessão interactivamente, o que dá início a uma implementação.
Se estiver a implementar o PowerShell 7 em muitos servidores, vai querer que a implementação aconteça independentemente da interacção do utilizador com a máquina.
Configurar uma partilha de ficheiros de rede
Certifique-se igualmente de que a partilha de rede em que colocou o PowerShell 7 MSI tem a permissão apropriada definida para permitir que todos os servidores no seu ambiente o acedam. Embora para além do âmbito deste artigo, pode encontrar mais aqui sobre a criação de partilha de ficheiros.
Configure o GPO
Crie então o seu GPO com os seguintes passos:
- Coloque o MSI na partilha de ficheiros atribuída a que os seus computadores podem aceder.
- Criar um GPO inicial dentro da Consola de Gestão de Políticas de Grupo. Pode ler mais sobre os GPO iniciais aqui
- A partir do momento em que o GPO é criado, abra-o e navegue para Configuração do Computador ->Configurações de Software.
- Li>Instalação do Software e depois seleccionar New -> Package.
- Na caixa de diálogo, adicionar o caminho UNC completo ao MSI. Por exemplo, se um ficheiro partilhado, chamado pasta, estiver no server.namef, o caminho seria {\i1}server.name\folder\powershell-7.msi
- Click Open -> Assigned -> OK.
Anexar o GPO ao(s) OU requerido(s)
Após criação, anexar o GPO ao(s) OU requerido(s). Verifique novamente dentro de algumas horas e a implementação deverá estar quase sempre completa.
Verifique o progresso da instalação da GPO
Se preferir uma abordagem mais prática para verificar a implementação da sua Política de Grupo, verifique este pequeno script abaixo que criará um relatório com o objecto da Política de Grupo aplicado aos computadores numa OU específica.
Certifique-se de alterar o nome distinto da OU (OU=Domain Controllers,DC=mylab,DC=local) para a sua OU.
Nota que pode executar isto num controlador de domínio ou num computador de domínio com o módulo PowerShell ActiveDirectory instalado.
$computers = Get-ADComputer -Filter * -SearchBase 'OU=Domain Controllers, DC=mylab, DC=local'ForEach ($computer in $computers) { Get-GPResultantSetOfPolicy -Computer $computer -ReportType HTML -Path c:\temp\$computer.html}
Se desejar verificar servidores específicos, o comando abaixo será útil. Ele chega a um computador remoto ($computer
) e verifica a versão do PowerShell instalado nesse computador com $PSVersionTable.PSVersion
.
PS> Invoke-Command -Computername $computer -Scriptblock {$PSVersionTable.psversion}
Por último, se encontrar algum computador que não tenha a política de grupo aplicada, pode executar o seguinte comando e forçará a política de grupo a actualizar no computador alvo:
PS> Invoke-GPUpdate -Computer $computer
Implementar PowerShell 7 com PowerShell Remoting
Outra óptima forma de implementar PowerShell em máquinas remotas é com PowerShell! Embora isto possa parecer um pouco meta, PowerShell é uma linguagem de scripting suficientemente robusta para ajudar na instalação da sua substituição.
Antes de começar, assegure-se de que o comando PowerShell está activado e de que configurou as permissões apropriadas para executar comandos remotos em todo o seu ambiente. Pode encontrar um guia sobre como activar o comando PSRemoting via GPO aqui.
Desde que saiba sobre o comando de uma linha que para instalar PowerShell coberto anteriormente, terá de “embrulhar” esse comando num bloco de script e dizer ao comando Invoke-Command
para o executar através de uma ou mais máquinas remotas.
Below é um exemplo de looping através de uma lista de computadores armazenados em $computers
array e depois executar o script install-powershell.ps1 em todos eles.
$creds = $(Get-Credential)ForEach ($computer in $computers) { Invoke-Command -ComputerName $computer -Credential $creds {iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview -Quiet"}}
Resumo
Existem tantas razões para manter a sua versão PowerShell actualizada, pelo menos na sua própria máquina se não no seu ambiente de produção. Poderá utilizar as funcionalidades mais recentes, tirar partido das melhorias de desempenho, e mesmo garantir que o seu código mais antigo não se partirá nas versões mais recentes.
Como pode ver, há muitas maneiras de descarregar e instalar novas versões do PowerShell. Escolha o método que funciona para si no seu ambiente e mantenha o PowerShellin’!
Leitura Adicional
- >li> Como verificar a sua versão PowerShell (All the Ways!)