Geek School Aprenda a 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 é incorporada ao Windows e é extremamente útil para saber em um ambiente de TI.
Embora essa série não esteja estruturada em torno de um exame, o aprendizado do PowerShell é uma das coisas mais importantes que você pode fazer como administrador de rede. Portanto, se há uma coisa que você quer aprender para ajudar na carreira de 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, fornecido com o Windows 8 e o Server 2012. Se você estiver executando o Windows 7, faça o download da atualização do PowerShell 3 antes de continuar.
Conheça o console e o ISE
Há duas maneiras de interagir com o PowerShell, o Console e o Ambiente de Scripts Integrados - também conhecido como ISE. O ISE melhorou muito da versão hedionda que acompanha o PowerShell 2 e pode ser aberta pressionando a combinação de teclado Win + R para exibir uma caixa de execução, digitando powershell_ise e pressionando enter.
Como você pode ver, o ISE exibe uma visualização dividida para que você possa criar scripts rapidamente enquanto ainda consegue 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 usada como um prompt do REPL - muito parecido com o prompt de comando. A v3 ISE finalmente adicionou suporte para intellisense tanto no painel de script quanto no console interativo.
Alternativamente, você pode interagir com o PowerShell usando o Console do PowerShell, que é o que eu usarei para a maior parte desta série. O PowerShell Console se comporta muito como o prompt de comando - você simplesmente insere comandos e cospe 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, digite powershell e pressione Enter.
O REPL solicita que isso seja incrível para a gratificação instantânea: você insere um comando e obtém resultados. Embora o Console não ofereça o intellisense, ele oferece algo chamado conclusão de tabulação, que funciona da mesma forma - simplesmente comece a digitar um comando e pressione tab para percorrer as possíveis correspondências.
Usando o sistema de ajuda
Nas versões anteriores do PowerShell, os arquivos de ajuda foram incluídos quando você instalou o Windows. Esta foi uma boa solução para a maior parte, mas nos deixou com um problema significativo. Quando a equipe de ajuda do PowerShell precisou parar de trabalhar nos arquivos de ajuda, os desenvolvedores do PowerShell ainda estavam ocupados codificando e fazendo alterações. Isso significava que, quando o PowerShell era enviado, os arquivos de ajuda estavam incorretos porque não continham as alterações mais recentes feitas no código. Para resolver esse problema, o PowerShell 3 não oferece arquivos de ajuda e inclui um sistema de ajuda atualizável. Isso significa que antes de fazer qualquer coisa, você desejará baixar os arquivos de ajuda mais recentes. Você pode fazer isso abrindo um Console do PowerShell e executando:
Atualização-Ajuda
Parabéns pela execução do seu primeiro comando do PowerShell! A verdade é que o comando Update-Help tem muito mais opções do que apenas executá-lo, e para vê-las, queremos ver a ajuda do comando. Para ver a ajuda de um comando, simplesmente passe o nome do comando com o qual deseja ajuda para o parâmetro Name do comando Get-Help, por exemplo:
Get-Help -Name Atualização-Ajuda
Você provavelmente está se perguntando como interpretar todo esse texto de qualquer maneira, quero dizer, por que existem duas muitas informações na seção de sintaxe e por que há tantos colchetes 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 diferentes maneiras de executar o comando. Estes são tecnicamente chamados de conjuntos de parâmetros e você só pode usar um de cada vez (você não pode misturar parâmetros de conjuntos diferentes). Na captura de tela acima, você pode ver que o conjunto de parâmetros superior tem um parâmetro SourcePath enquanto o inferior não. O motivo é que você usaria o conjunto de parâmetros principal (aquele que inclui o SourcePath) se estivesse atualizando seus arquivos de ajuda de outra máquina em sua rede que já os tenha baixado, enquanto você não precisaria especificar um caminho de origem se você só queria pegar os arquivos mais recentes da Microsoft.
Para responder a segunda pergunta, há uma certa sintaxe que ajuda os arquivos a seguir e aqui está:
- Colchetes ao redor de um nome de parâmetro e seu tipo significa que é um parâmetro opcional e o comando funcionará bem sem ele.
- Colchetes ao redor do nome dos parâmetros significa que os parâmetros são um parâmetro posicional.
- A coisa à direita de um parâmetro nos parênteses angulados informa o tipo de dados que o parâmetro está esperando.
Embora você deva aprender a ler a sintaxe do arquivo de ajuda, caso não tenha certeza sobre um parâmetro em particular, basta anexar -Full ao final do comando get help e vá até a seção parameters, onde ele informará um pouco mais sobre cada um deles. parâmetro.
Get-Help -Name Atualização-Ajuda -Full
A última coisa que você precisa saber sobre o sistema de ajuda é como usá-lo para descobrir comandos, o que na verdade é muito fácil. Você vê, o PowerShell aceita curingas em praticamente qualquer lugar, portanto, usá-los junto com o comando Get-Help permite que você descubra facilmente comandos. Por exemplo, estou procurando comandos que lidam com o Windows Services:
Get-Help -Name * serviço *
Claro, todas essas informações podem não ser úteis, mas confie em mim, aproveite o tempo e aprenda como usar o sistema de ajuda. Ele vem a calhar o tempo todo, mesmo para os criadores de scripts avançados que fazem isso há anos.
Segurança
Esta não seria uma introdução adequada sem mencionar a segurança. A maior preocupação da equipe do PowerShell é que o PowerShell se torne o mais recente e melhor ponto de ataque para as crianças de script. Eles colocaram algumas medidas de segurança para garantir que isso não aconteça, então vamos dar uma olhada neles.
A forma mais básica de proteção vem do fato de que a extensão de arquivo PS1 (a extensão usada para denotar um script do PowerShell) não está registrada em um host do PowerShell, na verdade, está registrada 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 ser executado.
Em segundo lugar, você não pode executar scripts a partir do shell apenas digitando o nome do script, você tem que especificar o caminho completo para o script. Então, se você quisesse executar um script em sua unidade C, teria que digitar:
C: \ runme.ps1
Ou se você já estiver na raiz da unidade C, poderá usar o seguinte:
.\ runme.ps1
Por fim, o PowerShell tem algo chamado Políticas de Execução, que impedem que você 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 quiser ter permissão para executá-los. Existem 4 Políticas de Execução notáveis:
- Restrito: Esta é a configuração padrão no PowerShell. Essa configuração significa que nenhum script pode ser executado, independentemente de sua assinatura. A única coisa que pode ser executada no PowerShell com essa configuração é um comando individual.
- AllSigned: Essa 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 você executar os scripts de editores confiáveis.
- RemoteSigned: Essa configuração permite que os scripts sejam executados, mas exige que o script e os arquivos de configuraçã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.
- Irrestrito: 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. Nós recomeçamos que você nunca usa essa configuração.
Para ver o que sua Política de Execução atual está definida, abra um Console do PowerShell e digite:
Get-ExecutionPolicy
Para este curso e para a maioria das outras circunstâncias, a Política de 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 do PowerShell elevado.
Set-ExecutionPolicy RemoteSigned
Isso é tudo por esse tempo gente, até amanhã para mais algum divertimento PowerShell.
Isenção de responsabilidade: o termo apropriado para um comando do PowerShell é um cmdlet e, a partir de agora, usaremos essa terminologia correta. Pareceu-me mais apropriado chamá-los de comandos para esta introdução.
Se você tiver alguma dúvida, pode enviar um tweet para mim @taybgibb ou apenas deixar um comentário.