Varonis | Segurança de dentro para fora

Tutorial de scripts do Windows PowerShell para iniciantes

Escrito por Michael Buckbee | May 14, 2020 4:00:00 AM

O Windows PowerShell é uma ferramenta poderosa para automatizar tarefas e simplificar a configuração e pode ser usado para automatizar praticamente qualquer tarefa no ecossistema do Windows, incluindo o Active Directory e o Exchange. Não é à toa que se tornou uma ferramenta popular entre administradores de sistemas e usuários experientes do Windows.

No nosso tutorial do PowerShell, mostramos como usar algumas das ferramentas mais úteis do PowerShell. Agora é hora de dar o próximo passo: usar essas ferramentas de dentro de scripts que podem ser executados com apenas um clique. Este tutorial de script do PowerShell mostrará como escrever e executar scripts básicos no PowerShell e, por fim, economizar muito tempo. 

Obtenha o curso em vídeo gratuito sobre PowerShell e Active Directory

O que é a linguagem PowerShell?

A linguagem PowerShell é uma sintaxe de programação proprietária de alto nível desenvolvida pela Microsoft com o objetivo principal de permitir que administradores de sistema automatizem ações e configurações. A linguagem é baseada em padrões orientados a objetos, mas só pode ser usada em ambientes Windows. Ele faz parte do .NET Framework e normalmente tem código C# na base de suas funções, embora conhecimento de C# não seja um pré-requisito para aprender o PowerShell. A comparação mais próxima com a linguagem PowerShell é Perl, que é usada em cenários semelhantes em ambientes Linux.

Com a linguagem PowerShell, cada função exclusiva é chamada de cmdlet. Um cmdlet tem um ou mais conjuntos de ações definidos e é capaz de retornar um objeto .NET. Alguns dos cmdlets mais básicos pré-configurados com o PowerShell são aqueles para navegar em uma estrutura de pastas e mover ou copiar arquivos.

O que é o PowerShell ISE?

As novas funções do cmdlet do PowerShell podem ser escritas em qualquer editor de texto ou ferramenta de processamento de texto. No entanto, as versões mais recentes do sistema operacional Windows incluem uma ferramenta chamada PowerShell ISE (Integrated Scripting Environment) para tornar os scripts ainda mais fáceis e robustos.

Ao abrir o PowerShell ISE pela primeira vez, pode parecer uma janela de prompt de comando familiar. No entanto, a ferramenta contém muito mais recursos e suporte para escrever código. O PowerShell ISE contém uma lista completa de todos os módulos e cmdlets comuns que os administradores de sistema podem precisar usar. Quando estiver tudo pronto para você começar a escrever suas funções de cmdlet, a ferramenta de depuração no PowerShell ISE permitirá que você teste seu código, identifique bugs ou problemas e trabalhe para corrigi-los. Como outros ambientes de programação, o PowerShell ISE é altamente personalizável. Os usuários podem escolher o esquema de cores, a fonte e o tema que querem usar ao escrever scripts. Novos scripts criados no ISE receberão a extensão de arquivo .psi, que só pode ser executada em ambientes PowerShell.

A linguagem de script no PowerShell será familiar se você já tiver usado o prompt de comando do Windows. Objetos e pipeline de dados funcionam de maneira semelhante, por exemplo, ao ping:

No entanto, a sintaxe usada no PowerShell é, na maioria dos casos, muito mais simples e fácil de ler do que os comandos usados no prompt de comando.

Usos e recursos do Windows PowerShell

Embora o Windows PowerShell possa ser usado para uma ampla variedade de aplicativos diferentes, para iniciantes, a principal utilidade dos scripts do PowerShell será a automação de sistemas em relação ao seguinte:

  • Trabalho com lotes de arquivos, seja automatizando backups ou controlando o acesso a um grande número de arquivos ao mesmo tempo.
  • Os scripts do PowerShell também são muito úteis ao adicionar e remover novos usuários. Com um script cuidadosamente projetado, você pode automatizar o processo de adição de unidades de rede, atualização de software de segurança e concessão de acesso a arquivos compartilhados a um novo usuário.
  • Para realizar essas tarefas, você usará vários recursos importantes do PowerShell, como cmdlets e aliases (que abordarei abaixo).

Iniciar o PowerShell

No Windows 10, o campo de busca é uma das maneiras mais rápidas de iniciar o PowerShell. Na barra de tarefas, no campo de texto de busca, digite “powershell”. Em seguida, clique ou toque no resultado “Windows PowerShell”.

Para executar o PowerShell como administrador, clique com o botão direito do mouse (ou toque e segure, se estiver usando uma tela sensível ao toque) no resultado da pesquisa do Windows PowerShell e clique ou toque em “Executar como Administrador”.

Também existem muitas outras maneiras de iniciar um console do PowerShell, mas esse é um bom método para começar.

Recursos básicos do PowerShell

Se você for iniciante no PowerShell, dê uma olhada no nosso tutorial do PowerShell antes de ler este guia de scripts do PowerShell. No tutorial, você encontrará descrições de todas as ferramentas básicas necessárias para trabalhar com o PowerShell. Isso inclui cmdlets, aliases, comandos de ajuda e pipes.

Depois de dominar os comandos básicos, você pode começar a escrever scripts. À medida que suas habilidades se desenvolvem, você também pode conferir nossos guias sobre opções de entrada para o PowerShell e também ler os recursos indicados ao final deste artigo.

Antes de executar scripts do PowerShell

Os scripts do PowerShell, como os que vamos criar neste tutorial, são salvos como arquivos .ps1. Como padrão, o Windows não permite que você execute esses scripts apenas clicando duas vezes no arquivo. Isso ocorre porque scripts maliciosos (ou mal escritos) podem causar muitos danos acidentais ao seu sistema. 

Em vez disso, para executar um script do PowerShell, clique com o botão direito do mouse no arquivo .ps1 e, em seguida, clique em “Executar com o PowerShell”. 

Se esta for a primeira vez que você trabalha com scripts do PowerShell, talvez não funcione porque existe uma política de todo o sistema que impede a execução. Execute este comando no PowerShell:

Get-ExecutionPolicy

Você verá um dos seguintes resultados:

  • Restricted: nenhum script será executado. Este é o padrão no Windows, então você precisará alterá-lo. 
  • AllSigned: só é possível executar scripts assinados por um desenvolvedor confiável. Você receberá um aviso antes de executar qualquer script.
  • RemoteSigned: você pode executar seus próprios scripts ou scripts assinados por um desenvolvedor confiável. 
  • Unrestricted: você pode executar qualquer script que quiser. Esta opção não deve ser usada, por razões óbvias.

Para começar a trabalhar com scripts do PowerShell, você precisa alterar essa configuração de política. Você deve alterá-la para “RemoteSigned” e pode fazer isso diretamente do PowerShell executando o seguinte comando:

Set-ExecutionPolicy RemoteSigned

Agora você já pode começar.

Como encontrar comandos do PowerShell

As pessoas adoram o PowerShell porque ele é muito poderoso. Mas esse poder vem de uma complexidade absolutamente insana. Não é viável ou prático memorizar todos os diferentes comandos, cmdlets, sinalizadores, filtros e outras formas de dizer ao PowerShell o que fazer.

Por sorte, várias ferramentas são incorporadas ao editor para ajudar você a resolver esse problema.

Preenchimento automático com Tab

Você não precisa memorizar todos os diferentes comandos ou a grafia exata de um comando. Digite get-c no editor e pressione a tecla Tab – você percorrerá todos os comandos, começando pelo que você digitou até agora. Ele funciona em qualquer seção do comando que você está tentando invocar, o nome (como mostrado abaixo), mas também sinalizadores e caminhos que você está manipulando para obter o resultado desejado.

Get-Command

Embora o preenchimento automático com a tecla Tab funcione bem, o que acontece se você não souber o nome do comando que está procurando? Nesse caso, você usaria um comando para encontrar outros

Get-Command 

Ao pesquisar comandos, é importante ter em mente que existe uma sintaxe para eles: VERBO-SUBSTANTIVO. Normalmente, os verbos são termos como “Get”, “Set”, “Add”, “Clear”, “Write” e “Read” e os substantivos são os arquivos, servidores ou outros itens na sua rede e aplicativos.

Get-Command é uma ferramenta de descoberta para explorar comandos disponíveis no seu sistema.

Sintaxe de comandos do PowerShell

Alguém uma vez descreveu a linguagem de script Perl como um “ruído de linha executável”, uma ferramenta bem útil com sintaxe muito opaca e uma curva de aprendizado consequentemente alta. 

Embora não seja exatamente nesse nível, o prompt de comando tradicional no Windows não é muito diferente. Considere uma tarefa comum, como pesquisar todos os itens em um diretório cujos nomes começam com a string “Foo”.

CMD: FOR /D /r %G in (“Foo*”) DO @Echo %G

  • FOR e DO indicam que é um loop.
  • O sinalizador /D indica que isso é para diretórios.
  • O sinalizador /r indica “arquivos com raiz no caminho”.
  • O padrão que define o conjunto de arquivos para fazer o loop é designado com “in”.
  • @Echo instrui o script a escrever o resultado de cada loop.
  • %G é o “parâmetro implícito” e é escolhido porque os desenvolvedores anteriores já haviam usado as letras de formato de nome de caminho a, d, f, n, p, s, t e x. Portanto, começar com G é comum, pois fornece o maior conjunto de letras não usadas para as variáveis retornadas (G, H, I, J, K, L, M) – em outras palavras, é um improviso.

Compare com o equivalente do PowerShell:

PowerShell: Get-ChildItem -Path C:\Example -Filter ‘Foo*’

O resultado é funcionalmente o mesmo, mas, mesmo neste exemplo bastante trivial, é muito mais fácil entender o que está acontecendo. É imediatamente óbvio o que todos os elementos do comando fazem e como você pode modificá-los. A única coisa pouco óbvia é o caractere curinga * (presente em ambos os exemplos), que indica que o padrão usado para combinar itens deve começar com “Foo” e terminar com qualquer outra coisa. 

E só melhora a partir daqui. Digamos que você queira saber como identificar apenas arquivos (não diretórios) no caminho. Você pode detalhar os documentos, pesquisar no Google e tentar classificá-los com a versão da linha de comando ou, se estiver no PowerShell, digite “-” e pressione a tecla Tab, passando pelas opções de sinalização até que a solução óbvia apareça.

Uma grande string x propriedades do objeto

Os servidores não servem para nada se não estiverem online. É por isso que as pessoas passam muito tempo fingindo que são operadores de sonar em um submarino e fazendo ping (sim, é por isso que se chama assim). 

Embora o resultado do ping seja útil (e você possa usar ping no PowerShell), no fim das contas, o resultado é apenas uma grande string – uma série de letras e números sem quebras definidas entre eles. 

O PowerShell tem um comando semelhante ao ping, mas que retorna dados estruturados, facilitando seu trabalho. Esse comando é Test-Connection. 

Abaixo, você pode ver o resultado do ping de um servidor (chamado “DC” em sua rede local) e o resultado equivalente de Test-Connection.

Além do fato de ser mais fácil de ler, o que é realmente importante é que agora você pode passar essas informações para outro comando, integrá-las em um utilitário maior (o que este curso abrangente está abordando) ou apenas modificá-las para fazer mais sentido. 

Como executar um script do PowerShell

Existem duas maneiras principais de executar um script do PowerShell:

  1. A primeira, que será familiar se você já usou a linha de comando do Windows antes, é escrever scripts diretamente no bloco de notas. Por exemplo, abra um novo arquivo do bloco de notas e digite 

Write-Host “Oi, mundo!”

Em seguida, salve esse arquivo como FirstScript.ps1

Você pode chamar o script do PowerShell usando o comando:

& "X:\FirstScript.ps1"

E você verá o resultado no PowerShell.

  1. A segunda maneira, muito mais eficaz, de criar scripts do PowerShell é usar o Windows PowerShell Integrated Scripting Environment (ISE). Com o ISE, você pode executar scripts e depurá-los em um ambiente gráfico. 

O ISE também oferece realce de sintaxe, edição de várias linhas, preenchimento automático com Tab, execução seletiva e uma série de outros recursos. Ele ainda permite que você abra várias janelas de script ao mesmo tempo, o que é útil quando se tem scripts que chamam outros.

Embora possa parecer um exagero agora, vale a pena trabalhar com o ISE desde o início. Dessa forma, você pode se acostumar antes de começar a escrever scripts mais complexos. 

Exemplos de scripts básicos do PowerShell

Agora você pode começar a escrever scripts do PowerShell. Então, vamos passar pelo processo passo a passo.

Exemplo de script 1: Obter a data

Vamos começar com um script simples. No ISE ou no bloco de notas, abra um novo arquivo. Digite:

Write-Host get-date

Em seguida, salve o arquivo como GetDate.ps1

Você pode chamar o script do PowerShell usando o comando:

& "C:\GetDate.ps1"

E você verá o resultado no PowerShell. Simples, não é?

Exemplo de script 2: Forçar a parada de processos

Se um serviço do Windows em execução falhou, você poderá usar um script do PowerShell para interrompê-lo. Por exemplo, suponha que minha empresa use o Lync para comunicações corporativas e ele fique travando e a ID do processo do Lync seja 9212. Posso interromper o Lync com um script.

Para fazer isso, crie um novo arquivo de script da mesma forma que antes. Desta vez, digite:

stop-process 9212

Ou

stop-process -processname lync

Salve o arquivo como StopLync.ps1 e, em seguida, você pode chamar o script usando:

& "X:\StopLync.ps1"

Esse script pode ser estendido para interromper uma série de processos ao mesmo tempo, apenas adicionando mais comandos do mesmo tipo. Você também pode escrever outro script se quiser iniciar automaticamente vários processos de uma só vez, usando:

start-process -processname [seu processo]

Isso é particularmente útil se você quer iniciar uma série de processos de rede ao mesmo tempo, por exemplo, e não quer inserir os comandos de maneira separada.

Exemplo de script 3: Verificar se um arquivo existe

Suponha que você precise excluir vários arquivos. Devemos primeiro verificar se esses arquivos existem.

test-path, como o nome sugere, permite verificar se existem elementos de caminho. Retorna TRUE se todos os elementos existirem e FALSE se algum estiver faltando.

Basta digitar:

test-Path (e o caminho do arquivo)

Exemplo de script 4: Configurar uma VPN em uma nova máquina

Agora que você já sabe o básico, vamos escrever um script que fará algo útil de verdade. Para administradores de sistemas, uma das principais vantagens do PowerShell é que ele permite automatizar o processo de configuração de novas máquinas.

Hoje, indivíduos e empresas usam redes privadas virtuais como uma medida de segurança quase obrigatória para proteger dados proprietários. Todas as novas máquinas devem estar conectadas a uma VPN durante a configuração. Embora você possa gerenciar cada uma manualmente, o PowerShell é perfeito para isso. Para iniciantes, ou seja, a maioria das pessoas que está lendo este guia, a maior parte dos serviços VPN de qualidade funcionará para o seu ambiente de computação, assim podemos escrever um script que o definirá e configurará automaticamente. 

A maneira mais fácil de fazer isso é abrir um novo arquivo como antes e digitar o comando:

Set-VpnConnection -Name "Test1" -ServerAddress "10.1.1.2" -PassThru

Você precisará definir o endereço do servidor para o endereço do servidor VPN local e, usando o comando “PassThru”, esse script retornará as opções de configuração da VPN. 

Salve o arquivo como SetVPN.ps1 e, em seguida, você poderá nomeá-lo como antes, usando 

& "X:\SetVPN.ps1"

A primeira vez que você chamar esse comando, poderá obter alguns erros. Mas tudo isso faz parte do aprendizado de scripts do PowerShell. Não tenha medo: sempre que você encontrar um erro como esse, dê uma olhada no guia oficial da Microsoft e encontre o comando “Set-VpnConnection”, adaptando os exemplos ao seu sistema.

Símbolos do PowerShell

Aqui está uma tabela para resumir alguns dos símbolos do PowerShell que usamos:

Símbolo Nome Função Exemplo
$ Cifrão Declara uma variável $a
= Igual Atribui um valor à variável $a=get-date
“” Aspas duplas Exibe texto Se $a = segunda-feira

 

“Dia da semana: $a”
terá como resultado:

Dia da semana: segunda-feira

+ Mais Concatena $a = novembro

 

“Dia da semana:”
+ $a.Dayofweek

Dia da semana: segunda-feira

( ) Parênteses Agrupa para criar um argumento  (get-date).day

Recursos do Windows PowerShell

Abaixo estão os tutoriais mais recentes. Selecionei os dez melhores:

Primeiros passos com o PowerShell

  1. PowerShell para iniciantes – Uma coleção de links para começar, práticas recomendadas, sintaxe de linha de comando e muito mais. 
  2. O livro sobre PowerShell mais vendido de Don Jones, Learn Windows PowerShell in a Month of Lunches, também está disponível em uma versão em vídeo! Após três a quatro meses de almoços com a série de tutoriais em vídeo, você automatizará as tarefas administrativas mais rápido do que jamais imaginou ser possível. A propósito, o autor responde às perguntas em powershell.org. Existem inúmeros recursos, eventos e até e-books gratuitos sobre o PowerShell! 
  3. Se você estiver fazendo o exame Microsoft MCSA 70-410, estes flashcards ajudarão: comandos do PowerShell
  4. O PowerShell permite combinar vários comandos em uma linha usando uma técnica chamada pipelining. Isso facilita as operações. Você pode descobrir aqui

Configurar e gerenciar o Active Directory

Economize ainda mais tempo aprendendo a configurar e gerenciar o Active Directory usando o PowerShell com estes recursos:

  1. Use o PowerShell para pesquisar contas de alto privilégio no AD
  2. Use cmdlets do módulo do AD para executar várias tarefas administrativas, de configuração e de diagnóstico em seus ambientes AD DS e AD LDS. 
  3. Crie um utilitário AD do zero neste curso épico em vídeo de três horas sobre o PowerShell (desbloqueie gratuitamente com o código: PSHL) 

Automatizar o Exchange

Com todo esse tempo livre à disposição, você pode aprender a automatizar o Exchange com estes recursos:

  1. Se você for administrador do Exchange, verifique se você tem estas cinco habilidades. 
  2. Clique aqui para obter mais dicas do PowerShell para administradores do Exchange. Em seguida, role para baixo para descobrir mais informações interessantes. 

Conclusão

Esperamos que este tutorial de scripts do PowerShell para iniciantes tenha mostrado tudo o que você precisa para começar a usar os scripts do PowerShell. Depois de aprender o básico da sintaxe do PowerShell, trabalhar com scripts é muito fácil: mantenha todos os seus scripts organizados e nomeie-os de forma que fique óbvio o que eles fazem. Assim, não haverá confusão.

Depois de dominar os scripts, não há limite para o que você pode fazer com o PowerShell. Confira nosso guia de scripts do Active Directory, por exemplo, para ter uma ideia da flexibilidade que o PowerShell pode oferecer.

No entanto, vou concluir com uma ressalva: não confie apenas no PowerShell para gerenciar a segurança e o acesso aos dados. Mesmo depois de se tornar especialista em scripts do PowerShell, as complexidades do GDPR e estruturas semelhantes tornam o gerenciamento de dados complexo demais para uma ferramenta tão simples. Em vez disso, considere consultar uma pessoa especialista em como gerenciar o acesso aos dados armazenados nos seus sistemas.