15Jul

Geek School: Saiba como automatizar o Windows com o PowerShell

Nesta edição da Geek School, estaremos ajudando você a entender a poderosa linguagem de script do PowerShell que é construída diretamente no Windows e é extremamente útil em um ambiente de TI.

Embora esta série não esteja estruturada em torno de um exame, aprender PowerShell é uma das coisas mais importantes que você pode fazer como administrador de rede, então, se houver uma coisa que você queira aprender a ajudar sua carreira em TI, é isso. Além disso, é muito divertido.

Introdução O

PowerShell é a ferramenta de automação mais poderosa que a Microsoft tem para oferecer, e é um shell e uma linguagem de script.

Observe que esta série é baseada no PowerShell 3, que é fornecido com o Windows 8 e o Server 2012. Se você estiver executando o Windows 7, baixe a atualização do PowerShell 3 antes de continuar.

Conheça o Console eo ISE

Há duas maneiras de interagir com o PowerShell fora da caixa, o Console e o Ambiente de Script Integrado - também conhecido como o ISE.O ISE melhorou grandemente da versão hedionda que é fornecida com o PowerShell 2 e pode ser aberta pressionando a combinação de teclado Win + R para abrir uma caixa de execução, depois digitar powershell_ise e pressionar enter.

Como você pode ver o ISE esportes uma vista dividida de modo que você possa rapidamente script enquanto ainda é capaz de ver o resultado na metade inferior do ISE.A metade inferior do ISE, onde os resultados do seu script são impressos, também pode ser usado como um prompt REPL - muito parecido com o prompt de comando. O v3 ISE finalmente adicionou suporte para intellisense tanto no painel de scripts quanto no console interativo.

Alternativamente, você pode interagir com o PowerShell usando o PowerShell Console, que é o que eu vou usar para a maioria desta série. O PowerShell Console se comporta como o prompt de comando - você simplesmente insere comandos e cuspa os resultados. Para abrir o Console do Windows PowerShell, pressione novamente a combinação de teclado Win + R para abrir uma caixa de execução e digite powershell e pressione enter. As instruções

REPL assim são incríveis para gratificação instantânea: você insere um comando e obtém resultados. Enquanto o Console não oferece intellisense, ele oferece algo chamado de conclusão da guia que funciona muito o mesmo - basta começar a digitar um comando e pressionar a guia para percorrer possíveis correspondências.

Usando o Sistema de Ajuda

Em versões anteriores do PowerShell, os arquivos de ajuda foram incluídos quando instalou o Windows. Esta foi uma boa solução para a maior parte, mas nos deixou um problema significativo. Quando o time de ajuda do PowerShell teve que parar de trabalhar nos arquivos de ajuda, os desenvolvedores do PowerShell ainda estavam ocupados codificando e fazendo mudanças. Isso significava que, quando o PowerShell era enviado, os arquivos de ajuda estavam incorretos porque não continham as mudanças mais recentes feitas no código. Para resolver este problema, o PowerShell 3 vem sem arquivos de ajuda na caixa e inclui um sistema de ajuda atualizável. Isso significa que antes de fazer qualquer coisa, você deseja baixar os arquivos de ajuda mais recentes. Você pode fazer isso abrindo um PowerShell Console e executando:

Update-Help

Parabéns pela execução do seu primeiro comando PowerShell! A verdade é que o comando Atualizar-Ajuda tem muitas outras opções do que simplesmente executá-lo, e para vê-los, gostaríamos de ver a ajuda para o comando. Para ver a ajuda para um comando, você simplesmente passa o nome do comando com o qual você deseja ajuda no parâmetro Nome do comando Get-Help, por exemplo:

Get-Help -Name Update-Help

Você provavelmente está se perguntando como interpretarTodo esse texto de qualquer maneira, quero dizer, por que há duas porções de informações na seção de sintaxe e por que há tantos suportes em todo o lugar? Primeiras coisas primeiro: a razão pela qual existem dois blocos de informações na seção de sintaxe é porque eles representam maneiras diferentes de executar o comando. Estes são tecnicamente chamados conjuntos de parâmetros e você só pode usar um de cada vez( você não pode misturar parâmetros de diferentes conjuntos).Na captura de tela acima, você pode ver que o conjunto de parâmetros superior possui um parâmetro SourcePath enquanto a parte inferior não. O motivo é que você usaria o conjunto de parâmetros top( o que inclui SourcePath) se você estivesse atualizando seus arquivos de ajuda de outra máquina em sua rede que já os baixasse, enquanto você não precisaria especificar um caminho de origem se vocêqueria apenas pegar os arquivos mais recentes da Microsoft.

Para responder a segunda pergunta, existe uma certa sintaxe que ajuda os arquivos a seguir e aqui é:

  • Suportes quadrados em torno de um nome de parâmetro e seu tipo significa que é um parâmetro opcional eo comando funcionará perfeitamente sem ele.
  • Suportes quadrados em torno do nome dos parâmetros significam que os parâmetros são parâmetros posicionais.
  • O item à direita de um parâmetro nos suportes angulados informa o tipo de dados que o parâmetro espera.

Enquanto você deve aprender a ler a sintaxe do arquivo de ajuda, se você nunca tiver certeza sobre um parâmetro específico, basta anexar - Completo até o final do seu comando de ajuda e vá até a seção de parâmetros, onde ele irá contar um pouco mais sobrecada parâmetro.

Get-Help -Name Atualização-Ajuda -Acesso

A última coisa que você precisa saber sobre o sistema de ajuda é como você pode usá-lo para descobrir comandos, o que é realmente muito fácil. Você vê, o PowerShell aceita curingas quase em qualquer lugar, então, usá-los junto com o comando Get-Help permite que você descubra facilmente os comandos. Por exemplo, estou à procura de comandos que lidam com os Serviços do Windows:

Get-Help -Name * service *

Claro, todas essas informações podem não ser úteis do morcego, mas confie em mim, aproveite o tempo e aprenda a usaro sistema de ajuda. Ele é útil o tempo todo, mesmo para scripters avançados que têm feito isso há anos.

Security

Esta não seria uma introdução adequada sem mencionar a segurança. A maior preocupação para a equipe PowerShell é que o PowerShell se torna o último e melhor ponto de ataque para scripts. Eles colocaram algumas medidas de segurança no lugar para garantir que isso não aconteça, então vamos dar uma olhada nelas.

A forma mais básica de proteção vem do fato de que a extensão do arquivo PS1( a extensão utilizada para denotar um script do PowerShell) não está registrada com um host do PowerShell, ele realmente está registrado no Bloco de Notas. Isso significa que se você clicar duas vezes em um arquivo, ele será aberto com o bloco de notas em vez de executado.

Em segundo lugar, você não pode executar scripts do shell simplesmente digitando o nome do script, você deve especificar o caminho completo para o script. Então, se você quisesse executar um script em sua unidade C, você teria que digitar:

C: \ runme.ps1

Ou, se você já estiver na raiz da unidade C, você pode usar o seguinte:

. \ Runme.ps1

Finalmente, o PowerShell tem algo chamado Políticas de Execução, que impedem que você apenas execute qualquer script antigo. Na verdade, por padrão, você não pode executar nenhum script e precisa alterar sua política de execução se desejar ter permissão para executá-los. Existem 4 Políticas de Execução notáveis:

  • Restrito : Esta é a configuração padrão no PowerShell. Esta configuração significa que nenhum script pode ser executado, independentemente da sua assinatura. O único que pode ser executado no PowerShell com esta configuração é um comando individual.
  • AllSigned: Esta configuração permite que scripts sejam executados no PowerShell. O script deve ter uma assinatura digital associada de um editor confiável. Haverá um aviso antes de executar os scripts de editores confiáveis.
  • RemoteSigned : Esta configuração permite que os scripts sejam executados, mas exige que o script e os arquivos de configuração que são baixados da Internet tenham uma assinatura digital associada de um editor confiável. Scripts executados a partir do computador local não precisam ser assinados. Não há prompts antes de executar o script.
  • Sem restrições : permite que scripts não assinados sejam executados, incluindo todos os scripts e arquivos de configuração baixados da Internet. Isso incluirá arquivos do Outlook e do Messenger. O risco aqui é executar scripts sem qualquer assinatura ou segurança. Reenviamos que você nunca usou essa configuração.

Para ver o que sua Política de Execução atual está configurada, abra um Console do PowerShell e digite:

Get-ExecutionPolicy

Para este curso e a maioria das outras circunstâncias, a Política RemoteSigned é a melhor, então vá em frente e altere sua política usando o seguinte.

Nota: Isso precisará ser feito a partir de um console PowerShell elevado.

Set-ExecutionPolicy RemoteSigned

Isso é tudo por esse momento pessoal, até amanhã para mais diversão do PowerShell.

Disclaimer: O termo adequado para um comando PowerShell é um cmdlet e, a partir de agora, usaremos esta terminologia correta. Só se sentia mais apropriado chamá-los de comandos para esta introdução.

Se você tiver alguma dúvida, você pode me fazer uma pata @taybgibb, ou simplesmente deixar um comentário.