Nesta edição da Geek School, ajudaremos você a entender a poderosa linguagem de script PowerShell que é incorporada ao Windows e é extremamente útil conhecê-la em um ambiente de TI.
Embora esta série não seja estruturada em torno de um exame, aprender o PowerShell é uma das coisas mais importantes que você pode fazer como administrador de rede, portanto, se há algo que você deseja aprender para ajudar em sua carreira em TI, é isso. Além disso, é muito divertido.
Introdução
PowerShell é a ferramenta de automação mais poderosa que a Microsoft tem a oferecer, e é Concha e um linguagem de script .
Observe que esta série é baseada no PowerShell 3, que acompanha 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 e o ISE
Existem duas maneiras de interagir com o PowerShell fora da caixa, o Console e o Ambiente de Scripting Integrado - também conhecido como ISE. O ISE melhorou muito em relação à versão horrível fornecida com o PowerShell 2 e pode ser aberto pressionando a combinação de teclado Win + R para abrir uma caixa de execução, em seguida, digitando powershell_ise e pressionando enter.
Como você pode ver, o ISE apresenta uma visualização dividida para que você possa fazer o script 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 REPL - muito parecido com o prompt de comando. O v3 ISE finalmente adicionou suporte para intellisense tanto no painel de script quanto no console interativo.
Como alternativa, você pode interagir com o PowerShell usando o Console do PowerShell, que é o que usarei na maior parte desta série. O console do PowerShell se comporta de maneira muito semelhante ao prompt de comando - você simplesmente insere os comandos e ele expõe 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.
Prompts REPL como este são incríveis para gratificação instantânea: você insere um comando e obtém resultados. Embora o console não ofereça intellisense, ele oferece algo chamado preenchimento de tab, que funciona da mesma forma - basta começar a digitar um comando e pressionar tab para alternar entre as possíveis correspondências.
Usando o Sistema de Ajuda
Nas versões anteriores do PowerShell, os arquivos de ajuda eram incluídos durante a instalação do Windows. Essa foi uma boa solução na maior parte, mas nos deixou com um problema significativo. Quando a equipe de ajuda do PowerShell teve que 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 foi 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 vem com nenhum arquivo de ajuda pronto para uso 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:
Update-Help
Parabéns por executar seu primeiro comando do PowerShell! A verdade é que o comando Update-Help tem muito mais opções do que simplesmente executá-lo e, para vê-las, vamos querer ver a ajuda do comando. Para ver a ajuda de um comando, basta passar o nome do comando com o qual deseja ajuda para o parâmetro Name do comando Get-Help, por exemplo:
Get-Help –Name Update-Help
Você provavelmente está se perguntando como interpretar todo aquele texto, quero dizer, por que há duas tantas informações na seção de sintaxe e por que há tantos colchetes por toda parte? Comecemos pelo princípio: a razão de haver dois blocos de informações na seção de sintaxe é porque eles representam maneiras diferentes 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 superior (aquele que inclui SourcePath) se estivesse atualizando seus arquivos de ajuda de outra máquina em sua rede que já os baixou, enquanto você não precisaria especificar um caminho de origem se você só queria pegar os arquivos mais recentes da Microsoft.
Para responder à segunda pergunta, há uma certa sintaxe que os arquivos de ajuda seguem e aqui está:
- Colchetes ao redor de um nome de parâmetro e seu tipo significam que é um parâmetro opcional e o comando funcionará bem sem ele.
- Colchetes ao redor do nome dos parâmetros significam que os parâmetros são parâmetros posicionais.
- A coisa à direita de um parâmetro entre colchetes indica o tipo de dados que o parâmetro espera.
Embora você deva aprender a ler a sintaxe do arquivo de ajuda, se você não tiver certeza sobre um parâmetro específico, apenas anexe –Full ao final de seu comando get help e role para baixo até a seção de parâmetros, onde ele lhe contará um pouco mais sobre cada um parâmetro.
Get-Help –Name Update-Help –Full
A última coisa que você precisa saber sobre o sistema de ajuda é como você pode usá-lo para descobrir comandos, o que na verdade é muito fácil. Veja, o PowerShell aceita caracteres curinga em quase qualquer lugar, portanto, usá-los junto com o comando Get-Help permite que você descubra comandos facilmente. Por exemplo, estou procurando comandos que lidem com serviços do Windows:
Get-Help –Name * service *
Claro, todas essas informações podem não ser úteis imediatamente, mas acredite em mim, reserve um tempo e aprenda como usar o sistema de ajuda. É útil o tempo todo, mesmo para 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 maior e mais recente ponto de ataque para script kiddies. Eles implementaram algumas medidas de segurança 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 usada para denotar um script do PowerShell) não está registrada com um host 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 do shell apenas digitando o nome do script, você deve especificar o caminho completo para o script. Portanto, se você quiser executar um script em sua unidade C, deverá digitar:
C: \ runme.ps1
Ou se você já estiver na raiz da unidade C, pode usar o seguinte:
. \ ρυνμε.ψ1
Finalmente, o PowerShell tem algo chamado Políticas de Execução, que impede você de apenas executar 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 prompt antes de executar os scripts de editores confiáveis.
- RemoteSigned : Esta configuração permite que os scripts sejam executados, mas requer que o script e os arquivos de configuração baixados da Internet tenham uma assinatura digital associada de um editor confiável. Os scripts executados a partir do computador local não precisam ser assinados. Não há prompts antes de executar o script.
- Irrestrito : Isso 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. Recomendamos que você nunca use esta 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 a maioria das outras circunstâncias, a Política RemoteSigned é a melhor, então vá em frente e mude sua política usando o seguinte.
Observação: isso precisará ser feito a partir de um console PowerShell elevado.
Set-ExecutionPolicy RemoteSigned
Isso é tudo por este tempo, pessoal, nos vemos amanhã para um pouco mais de diversão PowerShell.
Isenção de responsabilidade: o termo adequado para um comando do PowerShell é um cmdlet e, a partir de agora, usaremos essa terminologia correta. Pareceu mais apropriado chamá-los de comandos para esta introdução.
Se você tiver alguma dúvida, pode me tweetar @taybgibb , ou apenas deixe um comentário.