PowerShell - Administração e Automatização de Sistemas Windows (eBook)

Page 1


POWERSHELL ADMINISTRAÇÃO E AUTOMATIZAÇÃO DE SISTEMAS WINDOWS

Luís Abreu Paulo Morgado

FCA – Editora de Informática, Lda www.fca.pt


EDIÇÃO FCA – Editora de Informática, Lda. www.fca.pt Copyright © 2016, FCA – Editora de Informática, Lda. ISBN eBook: 978-972-722-846-1 1.ª edição eBook: maio 2016 Capa: José Manuel Ferrão – Look-Ahead Todos os nossos livros passam por um rigoroso controlo de qualidade, no entanto aconselhamos a consulta periódica do nosso site (www.fca.pt) para fazer o download de eventuais correções. Não nos responsabilizamos por desatualizações das hiperligações presentes nesta obra, que foram verificadas à data de publicação da mesma. Os nomes comerciais referenciados neste livro têm patente registada. Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo ou em parte, por qualquer processo eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, sítio Web, blogue ou outros, sem prévia autorização escrita da Editora.


ÍNDICE GERAL OS AUTORES AGRADECIMENTOS 0. SOBRE O LIVRO 0.1. O que posso encontrar neste livro? 0.2. Requisitos 0.3. A quem se dirige este livro? 0.4. Convenções 0.5. Organização do livro 0.5.1. Capítulo 1: Introdução 0.5.2. Capítulo 2: Aspetos Básicos 0.5.3. Capítulo 3: Scripting 0.5.4. Capítulo 4: Administração de Sistemas 0.5.5. Capítulo 5: Administração Remota 0.6. Suporte 1. INTRODUÇÃO 1.1. O que é a PowerShell? 1.2. Porquê aprender PowerShell? 1.3. CLI da PowerShell 1.3.1. Versão utilizada 1.3.2. Primeira demonstração prática Conclusão Sites de consulta 2. ASPETOS BÁSICOS 2.1. Comandos PowerShell: cmdlets 2.1.1. Utilização de parâmetros


2.1.2. Aliases 2.1.3. Conjuntos de parâmetros (parameter sets) 2.2. Cmdlet Get-Help 2.2.1. Atualização da ajuda 2.2.2. Tópicos de ajuda 2.3. Cmdlet Get-Command 2.4. Pipelines 2.5. Cmdlet Get-Member 2.5.1. Um exemplo completo 2.6. Formatação 2.6.1. Cmdlet Format-List 2.6.2. Cmdlet Format-Table 2.6.3. Cmdlet Format-Wide Conclusão Sites de consulta 3. SCRIPTING 3.1. Variáveis 3.1.1. Declaração e inicialização de variáveis 3.1.2. Tipos de variáveis 3.1.3. Âmbitos (scopes) 3.1.4. Uso de variáveis em comandos 3.1.5. Strings 3.1.6. Arrays 3.1.7. Hash tables 3.2. Instruções de decisão e de repetição 3.3. Funções 3.3.1. Utilização de parâmetros 3.3.2. Parâmetros do tipo switch 3.3.3. Aspetos avançados 3.4. Scripts


3.4.1. Outros aspetos interessantes 3.5. Tratamento de erros Conclusão Sites de consulta 4. ADMINISTRAÇÃO DE SISTEMAS 4.1. Introdução 4.2. Interação com ficheiros 4.2.1. Criação de pastas 4.2.2. Copiar ficheiros 4.2.3. Mover ficheiros 4.2.4. Modificar nome de ficheiros 4.2.5. Eliminar ficheiros 4.2.6. Permissões 4.3. Impressoras 4.4. Registo do Windows 4.4.1. Providers PowerShell 4.4.2. Exemplos de interação com o Registo do Windows 4.5. Rede (networking) 4.5.1. Ligações de rede 4.5.2. DNS (Domain Name System) no lado cliente 4.5.3. Diagnóstico de ligações de rede 4.5.4. Mapeamento de shares de rede 4.6. Sistema operativo 4.6.1. Sessões CIM 4.6.2. Filtragem de resultados obtidos 4.7. ADSI (Active Directory Services Interface) 4.7.1. Criação e eliminação de objetos 4.7.2. Modificação de objetos 4.7.3. Considerações finais 4.8. Módulo Active Directory


4.9. Utilização de jobs 4.10.Gestão de pacotes de instalação (Package Management) 4.10.1. Módulo PackageManagement 4.10.2. Providers 4.10.3. Repositórios de pacotes 4.10.4. Gestão de pacotes 4.10.5. Módulo PowerShellGet Conclusão Sites de consulta 5. ADMINISTRAÇÃO REMOTA 5.1. Aspetos básicos 5.2. Configuração 5.2.1. Cmdlet Enable-PSRemoting 5.2.2. Modificação das permissões das configurações de sessão 5.2.3. Modificação dos privilégios do utilizador 5.2.4. Observações finais 5.3. Utilização 5.3.1. Cmdlets com parâmetro ComputerName 5.3.2. Sessões interativas 5.3.3. Invocação remota de comandos 5.3.4. Sessões persistentes 5.4. Sessões remotas CIM 5.5. Jobs remotos Conclusão Sites de consulta ÍNDICE REMISSIVO


OS AUTORES Luís Abreu – Licenciado em Engenharia de Sistemas e Computadores pela Universidade da Madeira. Utilizador regular da plataforma .NET desde 2002. Ao longo dos últimos anos, participou em vários projetos Web e contribuiu com vários artigos para o site do grupo português PontoNetPT. Atualmente trabalha na SRA, onde é um dos responsáveis pela arquitetura e desenvolvimento de aplicações. Desde outubro de 2005 é MVP ASP.NET. A partir de 2006 passou a ser o único português a integrar o grupo internacional ASP Insiders (um grupo de elite que mantém contactos regulares com a equipa da Microsoft que desenvolve a plataforma ASP.NET). Autor dos seguintes livros editados pela FCA: ASP.NET 4.5, AJAX com ASP.NET, Silverlight 4.0 e Desenvolvimento em Windows 8, todos da coleção Curso Completo; HTML5 (4.a Ed. At. e Aum.), ASP.NET MVC, JavaScript (2.a Ed. At.), LINQ com C# (coautor), ASP.NET 4.5.1 e JavaScript 6, todos da coleção MyTI. Autor dos seguintes eBooks editados pela FCA: HTML5 (4.a Ed. At. e Aum.), Node.js – Construção de Aplicações Web e C# 6 – Programação com Produtividade (coautor).

Paulo Morgado – Bacharel em Eletrónica e Telecomunicações (Sistemas Digitais) pelo Instituto Superior de Engenharia de Lisboa e Licenciado em Engenharia Informática pela Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa. Utilizador regular da plataforma .NET desde 2003, tendo desenhado e desenvolvido as mais variadas aplicações. Tem artigos publicados em sites Web da especialidade em Portugal e no estrangeiro. Desde 2003 recebe da Microsoft o prémio “Most Valuable Professional” em competências relacionadas com a linguagem de programação C# e com a plataforma .NET.


Coautor do livro LINQ com C#, da coleção MyTI, e do eBook C# 6 – Programação com Produtividade, ambos editados pela FCA.


AGRADECIMENTOS Em primeiro lugar, quero agradecer à minha esposa, Marina, pelo apoio fornecido durante todo o processo de escrita do livro. Não posso deixar de referir a participação do Belarmino Mendonça, do Luís Filipe Barros, do Helder Robinson, do Rui Melo e do Nuno Gomes. As suas revisões, contribuições técnicas e opiniões sinceras tiveram uma influência positiva no resultado final. Finalmente, queria também agradecer à Ana Correia e à Laura Faia (da FCA) pela disponibilidade demonstrada ao longo do projeto. Luís Abreu

Em primeiro lugar, quero agradecer à minha esposa, Eugénia, e ao meu filho, Carlos, por todo o apoio e incentivo. Quero ainda aproveitar esta oportunidade para agradecer ao meu amigo Luís Abreu, pelo desafio para participar na criação deste livro. Não posso, também, deixar de referir a participação do Belarmino Mendonça, do Luís Filipe Barros, do Helder Robinson, do Rui Melo e do Nuno Gomes. As suas revisões, contribuições técnicas e opiniões sinceras tiveram uma influência positiva no resultado final. Finalmente, queria também agradecer à Ana Correia e à Laura Faia (da FCA) pela disponibilidade demonstrada ao longo do projeto. Paulo Morgado


0

SOBRE O LIVRO

Nos últimos anos, a PowerShell tem ganhado cada vez maior popularidade e peso na administração e automatização de sistemas Windows. Neste livro, tentamos descrever e apresentar as principais caraterísticas associadas ao uso da PowerShell. Como veremos, descrever exatamente o que é a PowerShell acaba por ser uma tarefa bem difícil. A PowerShell não é só uma consola para execução de comandos. Também não é só uma linguagem de scripting. Na realidade, estas são apenas duas das faces mais visíveis deste ambiente de execução, cujas principais funcionalidades serão analisadas neste livro.

0.1 O QUE POSSO ENCONTRAR NESTE LIVRO? Este livro centra-se na apresentação das principais caraterísticas e funcionalidades disponibilizadas pela PowerShell. Para além de introduzir o leitor ao mundo da PowerShell e de fornecer os princípios básicos que servirão de ponto de partida para a exploração deste ambiente de execução, apresenta vários exemplos práticos de diferentes áreas nas quais a utilização da PowerShell contribui para o aumento da eficácia e da produtividade dos utilizadores (administradores de sistema e programadores). Assim, ao longo deste livro, o leitor poderá, por exemplo, encontrar informação sobre como interagir com sistemas de ficheiros e registo do Windows. Para além disso, apresenta alguns comandos que podem auxiliar o leitor a efetuar a deteção e a resolução de eventuais problemas comuns


(ligação à rede, DNS – Domain Name System, entre outros). Tópicos como WMI (Windows Management Instrumentation) e interação com Active Directory também não foram esquecidos e são analisados ao longo do livro. Finalmente, existe ainda espaço para introduzir o remoting. Como veremos, esta é uma funcionalidade avançada, cujo principal objetivo é permitir a execução de comandos em máquinas remotas. Esta é, com toda a certeza, uma funcionalidade muito útil para o administrador de sistemas distribuídos.

0.2 REQUISITOS Este é um livro prático. Apesar disso, a verdade é que foi escrito para permitir que a aprendizagem das funcionalidades da plataforma possa ser feita sem que o leitor tenha de estar sentado em frente de um computador. Nos dias que correm, praticamente todos os sistemas Windows já possuem a PowerShell instalada. Dada a constante evolução da PowerShell, a sua versão tem vindo a evoluir com a versão do sistema operativo. No entanto, tem havido uma preocupação para manter a última versão compatível com todas as versões de sistema operativo suportadas. Apesar de muitos dos exemplos apresentados poderem ser utilizados na versão 3.0 da PowerShell, recomendamos a instalação da versão 4.0 (ou superior) para garantir uma correta execução de todos os comandos discutidos neste livro. Essa versão (ou uma superior) pode ser obtida a partir da página oficial da PowerShell em https://msdn.microsoft.com/powershell/ mt173057.aspx.


0.3 A QUEM SE DIRIGE ESTE LIVRO? Este livro é dirigido a todos aqueles que pretendem colocar-se rapidamente a par das principais funcionalidades introduzidas pela PowerShell. O livro parte do pressuposto de que o leitor já tem alguns conhecimentos sobre a plataforma Windows, pelo que não são apresentadas quaisquer noções básicas acerca desta plataforma.

0.4 CONVENÇÕES Ao longo deste livro, optou-se por seguir um conjunto de convenções que facilitam a interpretação do texto e do código apresentados. Assim, todos os comandos são apresentados no seguinte formato: Get-ChildItem é usado para representar comandos que tiveram de ser O caráter divididos em várias linhas por falta de espaço no livro: isto deveria estar tudo numa linha Por sua vez, as notas ou observações importantes poderão ser encontradas no interior de uma secção com o seguinte grafismo: Nota importante Esta é uma nota ou observação importante.


0.5 ORGANIZAÇÃO DO LIVRO Este livro encontra-se dividido em cinco capítulos, que poderão ser lidos sequencialmente ou, se o leitor assim o preferir, de forma alternada (isto é, sem respeitar a ordem de capítulos apresentada). A leitura sequencial do livro conduz o leitor ao longo de um processo de aprendizagem da PowerShell que começa por introduzir os conceitos e comandos base antes de apresentar vários exemplos práticos de diversas áreas. Por outro lado, a leitura não sequencial (alternada) dos capítulos permite o uso do livro como referência para funcionalidades. Esta aproximação é possível devido ao facto de todas as (poucas) dependências entre capítulos estarem devidamente identificadas.

0.5.1 CAPÍTULO 1: INTRODUÇÃO Este capítulo dará início ao nosso estudo da PowerShell. Depois de justificar o porquê do uso desta plataforma, o capítulo apresenta algumas das principais caraterísticas associadas ao uso da PowerShell. O capítulo não termina sem ilustrar um exemplo prático com algumas das potencialidades associadas ao uso da PowerShell.

0.5.2 CAPÍTULO 2: ASPETOS BÁSICOS Neste capítulo começaremos por apresentar um conjunto de cmdlets que permitem a exploração dos restantes cmdlets e as principais caraterísticas deste ambiente de execução. Neste capítulo, aproveitaremos ainda para introduzir o conceito de formatador e verificar como recorrer a estes elementos para apresentar os resultados obtidos a partir da execução dos comandos.

0.5.3 CAPÍTULO 3: SCRIPTING Neste capítulo introduziremos várias das funcionalidades relacionadas com a escrita de código script em PowerShell. Depois de


introduzirmos o conceito de variável e de apresentarmos alguns dos principais tipos que podem ser usados diariamente na PowerShell, voltaremos a nossa atenção para o uso de estruturas de decisão e de repetição. O capítulo refere ainda vários aspetos importantes relacionados com a escrita de funções e com a criação de ficheiros de script que permitem a reutilização de código PowerShell entre sessões de trabalho.

0.5.4 CAPÍTULO 4: ADMINISTRAÇÃO DE SISTEMAS Neste capítulo, reutilizaremos os conhecimentos introduzidos nos capítulos anteriores e apresentaremos vários exempos práticos que mostram como a PowerShell pode ser usada na resolução de problemas normais do dia a dia do administrador de sistemas. Interação com ficheiros, com pastas e com o Registo do Windows são alguns dos tópicos relacionados com a administração local que são apresentados. O capítulo reserva ainda espaço para alguns tópicos mais avançados, como, por exemplo, a utilização de WMI e ADSI (Active Directory Service Interfaces) e a gestão de um Active Directory através dos comandos fornecidos pela ferramenta RSAT (Remote Server Administration Tool). Finalmente, introduziremos o conceito de job e veremos como é que se pode recorrer a estes objetos para efetuar a execução de comandos em background.

0.5.5 CAPÍTULO 5: ADMINISTRAÇÃO REMOTA O último capítulo do livro aborda o uso de remoting. Depois de apresentar os aspetos teóricos relacionados com o uso de remoting, o capítulo apresenta todos os passos necessários à correta configuração de uma máquina para que possa receber comandos remotos. Em seguida, serão apresentadas várias estratégias que podem ser utilizadas para permitir a execução de um comando remotamente. Assim, temas como sessões remotas interativas, o estabelecimento de sessões


remotas e o uso de sessões CIM (Common Information Model) serão abordados com vários exemplos que ilustram a sua aplicação prática.

0.6 SUPORTE Este livro foi elaborado com base na versão 4.0 da plataforma PowerShell. Se, por acaso, o leitor encontrar informação que lhe pareça incorreta, ou tiver sugestões em relação ao conteúdo de alguma secção deste livro, então não hesite e envie um email com as suas questões para labreu@gmail.com. Eventuais alterações serão publicadas no site da editora em http://www.fca.pt.


1

INTRODUÇÃO

Neste capítulo, vamos iniciar a nossa viagem pelo mundo da PowerShell. Depois de introduzirmos a PowerShell e de apresentarmos algumas razões que justificam a sua aprendizagem, passaremos à prática e ilustraremos algumas funcionalidades e caraterísticas mais importantes no seu uso diário.

1.1 O QUE É A POWERSHELL? Mas afinal o que é a PowerShell? Será que estamos a falar de uma consola com linha de comandos? Ou será que estamos a falar de uma linguagem de scripting? Na realidade, a PowerShell é ambas. Mas a PowerShell é muito mais do que uma linha de comandos ou linguagem de scripting. Na verdade, estas são apenas duas das faces mais visíveis da PowerShell. Na nossa opinião, a PowerShell deve ser vista como um ambiente de execução, que nos permite interagir com um sistema operativo através de um conjunto de ferramentas. À primeira vista, esta definição pode parecer muito abstrata, pelo que é conveniente procedermos a uma explicação mais profunda. A Figura 1.1 apresenta aquilo a que muitas pessoas chamam de PowerShell. Na realidade, essa figura apresenta apenas o CLI (Command Line Interface) da PowerShell. É através desta consola que podemos executar os comandos, os scripts e muitas das tarefas que até ao lançamento


da PowerShell eram tipicamente executadas na consola Command Prompt (cmd.exe).

FIGURA 1.1 – Command Line Interface da PowerShell

Por exemplo, se executarmos o cmdlet Get-ChildItem, obteremos uma listagem com todos os itens (ficheiros e pastas) mantidos no interior da pasta atual. A Figura 1.2 apresenta os resultados obtidos a partir da execução desse cmdlet.


FIGURA 1.2 – Obtenção das pastas e ficheiros mantidos no interior de uma pasta O que é um cmdlet? Um cmdlet é um dos vários tipos de comando que executam uma determinada operação num ambiente PowerShell. Os cmdlets podem ser executados diretamente a partir do CLI (como ilustrado no exemplo anterior) ou a partir de scripts escritos pelo utilizador. Na prática, um cmdlet executa uma determinada tarefa e retorna o seu resultado sob a forma de um objeto .NET. Como veremos, este objeto, que representa o resultado da sua execução, pode ser passado a outro cmdlet através de um pipe. A passagem destes objetos .NET de um cmdlet para outro através de pipes é uma das grandes vantagens da PowerShell em relação a outras shells (em que a passagem de informação entre comandos é feita através de texto que tem de ser interpretado pelo comando seguinte). Para além dos cmdlets, a PowerShell também suporta a execução de outros tipos de comandos, como, por exemplo, os tradicionais ficheiros exe ou bat. Os cmdlets diferem desses comandos nos seguintes aspetos: –

Os cmdlets são instâncias de classes .NET (e não executáveis);


– Geralmente, os cmdlets não efetuam operações de parsing, apresentação de erro ou formatação de resultados (estas operações ficam a cargo do ambiente de execução PowerShell); – Os cmdlets são alimentados por objetos obtidos a partir da pipeline em vez de texto (como acontece com os comandos tradicionais); – Os cmdlets processam apenas um único objeto de cada vez (record-oriented). Como seria de esperar, também podemos criar os nossos próprios cmdlets. Para isso, temos de criar uma nova classe em C# (ou noutra linguagem compatível) e seguir as recomendações definidas em https://technet.microsoft.com/library/ dd878294.aspx. A criação de novos cmdlets está fora do âmbito deste livro, pelo que o utilizador interessado pode obter mais informações na documentação oficial existente em https://technet.microsoft.com/library/dd878294.aspx.

Antes de avançarmos, importa salientar que a PowerShell não é case sensitive. Portanto, no que diz respeito ao processamento dos comandos, ela não efetua quaisquer distinções entre minúsculas e maiúsculas. Na prática, isto significa que os nomes get-childitem, Get-childitem ou Get-ChildItem identificam sempre o mesmo cmdlet (a utilização de maiúsculas no texto do livro prende-se apenas com o uso de uma convenção aceite no mundo da PowerShell). Regressando ao nosso exemplo, resta-nos dizer que poderíamos ter recorrido aos aliases dir ou ls para obter exatamente o mesmo resultado obtido com a execução do comando anterior. Na prática, um alias, que é usado para identificar um cmdlet (no Capítulo 2 analisaremos detalhadamente este tópico). Para além dos aliases anteriores, a PowerShell introduz ainda outros, que tentam simplificar a vida aos utilizadores com experiência no uso da consola cmd.exe ou da consola bash. Note-se que o uso destes aliases na escrita de scripts ou módulos não é considerado uma boa prática. Para além da consola CLI, podemos executar comandos na PowerShell ISE (Integrated Script Environment). Este utilitário também pode ser usado na criação e depuração de scripts PowerShell. Uma das formas mais


rápidas de o executarmos passa pelo uso do alias ise (que referencia o comando PowerShell_ise.exe) a partir de uma consola CLI. A Figura 1.3 ilustra o aspeto desta aplicação. Como é possível verificar, a aplicação encontra-se dividida em três janelas. No canto inferior esquerdo encontramos uma consola CLI da PowerShell embebida. No canto superior esquerdo temos acesso a um editor que nos permite criar ou editar scripts. Finalmente, no lado direito temos uma janela que apresenta uma lista de cmdlets introduzidos pelos módulos registados na máquina. Ao escolhermos um comando, temos acesso a informação detalhada sobre esse comando. Esta janela permite-nos definir os valores dos vários parâmetros que podem ser utilizados em conjunto com um cmdlet.

FIGURA 1.3 – Janela da PowerShell ISE Módulos PowerShell


Um módulo pode conter cmdlets, funções, variáveis, providers e outros elementos (por exemplo, snap ins) que podem ser utilizados numa sessão PowerShell. Na prática, os módulos costumam agrupar vários comandos relacionados com uma determinada área. Como seria de esperar, os módulos podem ser distribuídos e instalados em qualquer máquina. Depois de instalados, os comandos definidos por esse módulo podem ser utilizados como qualquer outro cmdlet predefinido (em abono da verdade, importa referir que os chamados cmdlets predefinidos podem ser utilizados a partir de sessões PowerShell, porque os módulos que os contêm foram instalados aquando da instalação da PowerShell na máquina). A partir da versão 3 da PowerShell, depois de instalado um módulo é automaticamente carregado na sequência da primeira execução de um dos comandos por si definidos (anteriormente, a execução de um comando tinha sempre de ser precedida do carregamento do módulo que o definia). A localização dos módulos usados pela PowerShell é definida pela variável de ambiente PSModulePath e pode ser recuperada através do comando seguinte: PS E:\Users\luisabreu\Downloads> Get-ChildItem Env:\PSModulePath O leitor com experiência noutras shells não pode deixar de reparar que o acesso a uma variável de ambiente segue a mesma sintaxe utilizada para aceder a um ficheiro ou a uma pasta existentes no disco. Isto acontece porque os cmdlets que utilizamos para navegar ao longo das pastas e ficheiros de um disco foram criados para consumir dados disponibilizados por um provider. Como já existe um provider predefinido para variáveis de ambiente, então podemos reutilizar o comando Get-ChildItem para apresentar uma listagem dessas variáveis (no excerto anterior, limitámo-nos a apresentar o valor da variável de ambiente PSModulePath). No Capítulo 4 dedicaremos alguma atenção à análise do conceito de provider em PowerShell e apresentaremos alguns dos principais providers existentes. O comportamento da importação pode ser influenciado através da variável global $PSModuleAutoLoadingPreference, que espera um valor proveniente de uma enumeração com o mesmo nome (por omissão, é usado o valor All, que resulta na importação de todos os módulos). As enumerações são tipos programáticos utilizados para definir uma lista de valores que são considerados aceitáveis para um determinado cenário (neste caso, a enumeração


PSModuleAutoLoadingPreference define os valores All, ModuleQualified e None). Se alterarmos este comportamento predefinido, então poderá ser necessário efetuar a importação manual de um módulo para podermos aceder aos seus comandos exportados. Nestes cenários, a importação pode ser feita mediante o cmdlet Import-Module. Este cmdlet também pode ser utilizado quando queremos carregar um módulo que não está localizado numa das pastas definidas pela variável de ambiente PSModulePath, quando queremos refrescar um módulo que já foi carregado ou quando estamos a falar de módulos definidos no interior de assemblies (ficheiros de extensão dll). Poderá obter mais detalhes sobre este tópico em https://technet.microsoft.com/library/hh847804.aspx.

Estas são as duas principais aplicações disponíveis em todas as máquinas onde a PowerShell é instalada, mas não são as únicas. Por exemplo, o utilitário Server Manager é instalado em sistemas Windows Server 2012 e permite executar muitas das tarefas de gestão tipicamente associadas a um sistema deste tipo. Esta ferramenta gráfica fornece-nos um frontend que simplifica a execução de vários cmdlets PowerShell. Por outras palavras, todas as operações desempenhadas através desta ferramenta resultam na geração de cmdlets que são executados em background. A Figura 1.4 mostra o que acontece quando recorremos a esta ferramenta para criar um novo utilizador designado por John Demo.


FIGURA 1.4 – Utilitário Server Manager gera cmdlets PowerShell Ferramentas de administração remotas Ferramentas como o Server Manager podem ser igualmente instaladas em sistemas cliente, permitindo-nos assim efetuar a administração de servidores remotos. Para isso, temos de instalar as ferramentas RSAT (Remote Server Administration Tools), que podem ser obtidas gratuitamente a partir do site da Microsoft. Depois de navegarmos até https://www.microsoft.com/pt-pt/, precisamos apenas de efetuar uma pesquisa pelos termos RSAT e indicar a versão apropriada do sistema operativo (por exemplo, RSAT Windows 10). Após a instalação do pacote adequado, obtemos um conjunto de novas ferramentas que podem ser encontradas no interior da secção Administrative tools (Server Manager é uma das novas ferramentas instaladas nessa pasta). Para além disso, temos acesso a um conjunto de novos cmdlets que servem de suporte às novas ferramentas instaladas e que podem ser utilizados a partir do CLI da PowerShell.


1.2 PORQUÊ APRENDER POWERSHELL? Ao longo dos anos, a PowerShell tem ganhado espaço no ecossistema Windows. Para além de ser cada vez mais utilizada na gestão de sistemas operativos Windows, a Microsoft tem vindo a modificar todos os seus produtos (por exemplo, o Exchange e o SQL Server, entre outros) para que passem a ser geridos através dos vários cmdlets PowerShell que os acompanham. Estes produtos continuam também a disponibilizar uma interface gráfica de configuração, mas cada uma dessas tarefas resulta na execução em background de um cmdlet (portanto, estamos a falar de um funcionamento semelhante ao que descrevemos para a ferramenta Server Manager). Estas interfaces gráficas não permitem a realização de todas as operações de gestão possíveis, pelo que algumas delas (poucas) apenas podem ser efetuadas diretamente a partir de uma consola CLI. Para além de ser cada vez mais usado na gestão de produtos desenvolvidos pela Microsoft, é crescente o número de empresas que têm vindo a desenvolver cmdlets para gerirem as suas aplicações em ambientes Windows (por exemplo, VMware). Para além dos muitos cmdlets que permitem realizar várias tarefas a partir da consola, a PowerShell introduz inúmeras vantagens na automatização de tarefas quando comparada com a consola tradicional cmd.exe (a automatização de tarefas repetitivas é uma das principais tarefas inerentes à gestão de sistemas). Na nossa opinião, a principal vantagem reside no facto de o ambiente de execução da PowerShell trabalhar com objetos em vez de texto, conforme acontece com a consola cmd.exe e com consolas de outros sistemas operativos.

1.3 CLI DA POWERSHELL Ao longo deste livro, vamos recorrer frequentemente ao CLI da PowerShell, pelo que dedicaremos algum tempo à análise das caraterísticas


da consola que podem ser configuradas (neste capítulo concentramo-nos na análise das caraterísticas de uma consola existente em Windows 8.1; a consola introduzida pelo Windows 10 disponibiliza mais algumas propriedades para além das que são apresentadas nesta secção). Antes de avançarmos, recomendamos a adição de um atalho para o CLI da PowerShell à barra de tarefas. Um clique com o botão direito do rato sobre esse atalho resulta na apresentação do menu apresentado na Figura 1.5.

FIGURA 1.5 – Menu apresentado após clique efetuado sobre atalho para CLI da PowerShell

A partir do atalho para o CLI da PowerShell, podemos abrir uma nova consola com o CLI ou uma nova janela com a PowerShell ISE. Ainda mais importante é a possibilidade de executarmos ambos os utilitários como administradores. A execução dos utilitários com essas credenciais é necessária quando estamos perante tarefas que apenas podem ser executadas por administradores de uma máquina. Se, por um lado, a utilização deste modo de execução nos permite contornar as limitações inerentes ao UAC (User Account Control), também importa salientar que isso não garante a execução de todos os comandos


escritos na consola. Como veremos no Capítulo 3, a execução de scripts depende da política de execução da máquina. Por exemplo, no Windows 8.1 a política de execução predefinida impede a execução de scripts, e isto mesmo quando a consola é aberta em modo de administração. Depois de abrirmos o CLI, acedemos a uma janela semelhante à apresentada na Figura 1.1. Se clicarmos no ícone existente no canto superior esquerdo da janela (ou se clicarmos com o botão direito sobre a barra de topo da janela), temos acesso a um menu que nos permite aceder às propriedades da consola (Figura 1.6).

FIGURA 1.6 – Acesso às propriedades da consola do CLI

A janela das propriedades apresenta quatro tabuladores: Options, Font, Layout e Colours. No tabulador Options podemos definir o tamanho do cursor e o número de comandos guardados no histórico (Figura 1.7).


FIGURA 1.7 – Tabulador Options (Windows 8.1)

Note-se ainda a existência das opções agrupadas na opção Edit Options. Quando selecionada, a opção QuickEdit Mode permite-nos utilizar o


rato para copiar e colar texto. Por sua vez, a opção Insert Mode indica se o texto deve ser adicionado à linha ou, em alternativa, efetuar o override do texto existente nessa linha. Defaults vs. Properties A escolha da opção Defaults no menu da Figura 1.6 resulta na apresentação de uma janela muito semelhante à que surge quando escolhemos a opção Properties. Quando modificamos as definições da janela Properties, estamos a afetar a consola atual e todas as sessões futuras abertas a partir do atalho usado para lançar a consola atual. Por sua vez, as alterações efetuadas na janela Defaults não influenciam a sessão atual, mas todas as sessões futuras (com exceção das iniciadas a partir de um atalho cujas propriedades tenham sido previamente modificadas através do acesso às janelas Properties).

Por sua vez, no tabulador Font podemos escolher o tipo e o tamanho de letra que devem ser utilizados na consola (Figura 1.8).


FIGURA 1.8 – Tabulador Font (Windows 8.1)

A partir do tabulador Layout (Figura 1.9), podemos definir os tamanhos do buffer (Screen buffer size) e da janela (Window size), bem como o


posicionamento desta (Window position). O tamanho do buffer define o número de linhas de texto que é mantido na janela. Quando esse valor for ultrapassado, o texto mais antigo será eliminado. O tamanho da janela permite indicar as dimensões ocupadas pela janela no ecrã. Tipicamente, a largura dos tamanhos do buffer e da janela deve possuir os mesmos valores (se isto não acontecer, então é provável acabarmos com uma barra de scroll horizontal).


FIGURA 1.9 – Tabulador Layout (Windows 8.1)


Finalmente, o tabulador Colours permite definir as cores usadas pela consola. Conforme ĂŠ visĂ­vel na Figura 1.10, podemos definir as cores de texto e de fundo nos vĂĄrios estados da consola.


FIGURA 1.10 – Tabulador Colours (Windows 8.1)


Configuração através de um script Sendo a PowerShell um ambiente de runtime que suporta a criação e execução de scripts, então a configuração das propriedades da consola deveria poder ser efetuada através do CLI. E, na realidade, pode. O leitor interessado pode obter mais detalhes na secção Scripting the Console Configuration do artigo disponível em http://windowsitpro.com/PowerShell/PowerShell-basics-console-configuration.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.