Conheça os comandos básicos do PowerShell para gestão de utilizadores do seu servidor AD DS para ganhar velocidade e poupar tempo na gestão da sua infraestrutura.
Como vimos no artigo 10 Comandos de PowerShell para controlar os objetos do AD DS Server, “configurar e controlar uma infraestrutura de TI é uma tarefa árdua que exige muito esforço por parte da equipa técnica, com centenas de horas dedicadas à correta planificação e configuração, e centenas, senão milhares de horas de manutenção, incluindo tarefas de vários tipos”.
Nesse artigo focamo-nos em alguns comandos que nos ajudam a auditar os objetos do nosso AD DS Server, especificamente utilizadores e computadores, mas é claro que com isso não temos todo o trabalho feito, e é por isso que pensamos em escrever este artigo, no qual falaremos sobre como registar utilizadores e grupos e como fazer a gestão básica destes elementos.
Naturalmente, recomendamos fazer os testes inicialmente num servidor separado, e não fazer os testes num servidor de produção, porque isso permite ter mais liberdade e evitar contratempos desagradáveis. Se não tiver uma infraestrutura AD DS Server para testar, siga o tutorial a seguir, que explica Como configurar o seu servidor AD DS na Jotelulu (em breve).
Como gerir utilizadores de AD DS Server com o PowerShell?
Sem mais demoras, vamos começar a fazer os testes e explicar tudo aquilo de que vamos precisar. Falaremos também sobre os diferentes comandos que podemos usar.
Preparação:
Antes de poder trabalhar com o PowerShell no Active Directory devemos verificar a versão do PowerShell que temos no servidor, e também devemos importar o módulo de administração do AD DS.
Para verificar a versão do PowerShell, podemos usar os seguintes comandos:
Get-Host
$PSVersionTable
$PSVersionTable.PSVersion
Por um lado, podemos usar o comando “Get-Host” sem parâmetros, que irá devolver uma série de dados do console e entre os quais nos interessa o parâmetro “Version”, que se refere à versão do PowerShell.
Por outro lado, podemos consultar de forma mais direta a versão do PowerShell lançando a seguinte consulta “$PSVersionTable” que irá devolver muitas informações, e se quisermos apenas que nos mostre a versão do PowerShell, podemos iniciar o comando “$PSVersionTable.PSVersion”.
Imagem. Consulta da versão do PowerShell instalada no sistema
Agora que temos a certeza de que podemos trabalhar com o PowerShell, precisamos de importar o módulo que nos permitirá trabalhar com o Active Directory.
O módulo que nos permite gerir o AD DS a partir do PowerShell é o “ActiveDirectory”, uma demonstração de originalidade por parte da Microsoft, mas também um nome que torna muito fácil encontrá-lo.
Para importar o módulo, devemos iniciar uma consola do PowerShell com permissões de administrador. Em seguida, iniciamos o seguinte comando:
Import-Module ActiveDirectory
A instalação é bastante rápida e às vezes é possível ver apenas um flash no ecrã, mas tudo estará bem se não surgir nenhuma mensagem de erro.
Imagem. Importamos o módulo de gestão do Active Directory para PowerShell
Solicitar informação sobre o Domínio:
Agora que temos a capacidade de fazer ligação ao domínio e executar comandos de todos os tipos, vamos começar por executar algumas consultas para obter determinadas informações sobre a floresta de recursos, o domínio e os controladores de domínio.
Para obter informações sobre a floresta do AD DS, podemos iniciar o seguinte comando:
Get-ADForest
Que nos fornece informações sobre os seguintes pontos:
- Nome da floresta
- Domínios
- Sites.
- Raiz do domínio.
- Partições.
- Master de nomes de domínio.
- Nível funcional da floresta.
Podemos filtrar para consultar um ponto específico, como por exemplo o Domain Name Master ou o Functional Level da floresta, com um “|” (pipe ou barra vertical) para redirecionar a saída e um “Select” para selecionar os campos que nos interessam.
Imagem. Consultamos informações sobre a floresta do AD DS
No caso de querermos obter informações sobre o Domínio AD DS, encontraremos um comando muito semelhante ao comando “Get-ADForest”, o comando “Get-ADDomain” onde, como podemos ver, apenas se substitui “Domain” por “Floresta”, algo que nos pode ajudar a memorizar.
O comando “Get-ADDomain” mostra-nos as seguintes informações:
- O nome de domínio.
- Domínios infantis.
- Domínio Pai.
- Raiz DNS.
- Nível funcional do domínio.
- Floresta a que pertence.
- Nome NetBIOS.
- Emulador de PDC.
- Master RID.
- Master de Infraestrutura.
Podemos usar filtros como no caso anterior para poder fazer diferentes consultas, como o nível do domínio, nome do domínio, etc.
Alguns exemplos:
- Get-ADDomain | Select Name
- Get-ADDomain | Select DomainMode
- Get-ADDomain | Select Name, DomainMode
Imagem. Consultamos informações sobre o domínio AD DS.
Aproveitamos este ponto para apresentar a maneira pela qual podemos modificar a apresentação para adaptá-la às nossas necessidades. Por um lado, para poder modificar a apresentação, devemos usar o “|” para redirecionar a saída para o formato desejado. Podemos usar estas modificações sempre que julgarmos conveniente para melhorar a apresentação dos dados obtidos.
Estes são três dos formatos mais usados:
- FT: Tabela (Formato Tabela)
- FL: Lista (Formato Lista)
- Out-GridView: Lista (Formato em janela externa)
E usam-se da seguinte forma:
- Get-ADDomain | Select Name, DomainMode | FT
- Get-ADDomain | Select Name, DomainMode | FL
- Get-ADDomain | Select Name, DomainMode | Out-GridView
Imagem. Exemplos de representação do output de uma consulta do PowerShell
Também pode ser interessante fazer consultas para obter informações sobre os Controladores de Domínio (DC) da nossa infraestrutura AD DS Server.
Para obter informação sobre os DC, deve-se usar o comando “Get-ADDomainController” e, neste caso, pode-se usar o comando “-Filter” para poder selecionar o que nos interessa que seja exibido ou continuar a usar o “| Select” como antes.
Imagem. Consultamos informações sobre os Controladores de Domínio dos nossos AD DS.
Obter informações sobre utilizadores:
Em seguida, o próximo ponto que vamos analisar é como obter informações dos utilizadores, como, por exemplo, todos os dados e configuração de um utilizador específico.
Há várias maneiras de fazer isto. A primeira é lançar o comando “Get-ADUser” sem mais parâmetros do que o nome de utilizador do qual queremos obter as informações:
Get-ADUser jioller
Também podemos indicar as informações que queremos obter, e para isso teremos de usar o comando “-Properties”, que pode ser seguido de um “*” para mostrar todas as informações ou os campos que nos interessam.
Get-ADUser jioller -Properties *
Get-ADUser jioller -Properties CN, UserPrincipalName, whenCreated, whenChanged
Imagem. Consultamos informações de utilizadores registados no nosso AD DS
Outra consulta interessante a realizar pode ser obter o número de utilizadores registados no domínio, o que pode ajudar-nos a fazer uma rápida “auditoria” para saber se houve novos registos dos quais não temos conhecimento. O comando é simples, consiste basicamente em lançar uma consulta para utilizadores do domínio com o comando “Get-ADUser -Filter *” e contar os resultados com “().count”.
(Get-ADUser -Filter *).count
NOTA: Devemos sempre ter em mente que o PowerShell é muito mais do que uma linha de comando convencional e que trabalha com objetos, portanto as opções são quase infinitas.
Imagem. Verificamos o número de utilizadores no domínio
Registo e cancelamento de utilizadores:
Registar e cancelar o registo de utilizadores de um domínio é bastante comum e devemos ter isso sob controlo para poupar o máximo de tempo possível.
Embora o mais comum seja fazermos carregamentos massivos quando trabalhamos no PowerShell, neste caso veremos como carregar um utilizador manualmente, e mais tarde veremos como fazer carregamentos automáticos.
Para carregar o utilizador, devemos primeiro adicionar a password, pois esta não pode ser digitada diretamente no comando, onde devemos substituir <PASSWORD> pela palavra-passe que escolhemos.
$userpassword=ConvertTo-SecureString -AsPlainText -Force -String <PASSWORD>
Feito isto, o comando “New-ADUser” pode ser iniciado, o que pode ser tão simples como se vê abaixo:
New-ADUser -Name jioller2 -AccountPassword $userpassword
Ou pode adicionar alguns parâmetros, como uma descrição ou ativar a conta assim que ela for implantada (algo que não é necessário, mas desta forma garantimos que tudo corra bem):
New-ADUser -Name jioller2 -Description “Segunda Cuenta de Nacho” -Enabled $true -AccountPassword $userpassword
Imagem. Adicionamos um novo utilizador manualmente e verificamos o registo
Agora que sabemos como registar utilizador, devemos saber como eliminá-los para realizar estes dois procedimentos em tempo hábil. O comando utilizado é “Remove-LocalUser” e basta colocar o comando seguido da conta a ser eliminada para o fazer, sem maiores complicações.
Assim, o comando a ser executado para eliminar o utilizador “jioller2” seria:
Remove-LocalUser jioller2
Aqui aproveitamos para mostrar um comando de consulta no qual vamos filtrar os resultados para que sejam mostrados apenas os utilizadores que começam com uma string específica. Neste exemplo vamos usar “jio” e incluir os que tenham qualquer string de caracteres, mostrando apenas o seu nome:
Get-ADUser -Filter ‘Name -like “jio*”‘ | Select Name
Imagem. Excluímos um utilizador do AD DS com o PowerShell e verificamos se tudo correu bem
Registo e cancelamento de utilizadores de forma massiva:
Agora vamos ver como podemos automatizar a criação de utilizadores, usando um ficheiro de carregamento no formato “.csv” e um pequeno script que lê o ficheiro linha por linha e carrega os utilizadores um a um com base nas informações que encontrar em cada linha.
Para isso, como mencionamos, devemos criar um ficheiro de utilizador e password com uma estrutura bastante simples, em que cada linha é uma entrada, ou seja, um utilizador, e cada campo é separado por uma “,” (vírgula).
A estrutura pode ser semelhante à seguinte, onde a primeira linha contém o nome dos campos com os quais operar e cada um dos seguintes contém uma entrada do utilizador com o conjunto “Nome de utilizador” e “Password”.
user,password
usuario01,password01
usuario02,password02
…
A seguir, podemos ver o ficheiro que geramos e que contém os utilizadores que vamos registar em nosso domínio.
Imagem. Criamos o ficheiro de utilizador e password para a criação massiva de utilizadores
Uma vez guardado o ficheiro com a extensão “.cvs”, devemos importá-lo para que o script o carregue, o que fazemos com o seguinte comando:
$listadeusuarios=Import-Csv -Path usuarios.csv
Neste comando, o que realmente fazemos é carregar a importação do ficheiro através de “Import-Csv” e carregá-lo a partir do caminho descrito após o “-Path”. É importante que o comando seja executado a partir do mesmo caminho onde o ficheiro está localizado, caso contrário, o caminho relativo ou absoluto terá de ser marcado no caminho, que pode ser carregado da seguinte forma:
-Path C:\Users\administrador\Desktop\usuarios.csv
Uma vez importado o ficheiro, devemos iniciar a execução da importação, o que faremos com o script a seguir. É importante dizer que este script é bastante simples e não é o único que pode ser usado para realizar estas importações, pois pode ser muito mais elaborado e pode carregar outros campos como país, email, etc.
foreach ($i in $listadeusuarios)
{
$userpassword=ConvertTo-SecureString $i.password -AsPlainText -Force
New-LocalUser $i.user -Password $userpassword
}
O que este comando faz é percorrer o ficheiro e para cada linha executar um comando de criação de utilizador (New-LocalUser). Além disso, devemos prestar especial atenção à expressão “$userpassword=ConvertTo-SecureString $i.password -AsPlainText -Force” que nos permite inserir passwords, pois por padrão não é possível inseri-las.
Imagem. Fazemos a importação em massa de utilizadores para o nosso AD DS
Este registo de utilizadores será lançado no modo “verbose”, quer dizer, mostrando informações sobre a execução, e assim veremos uma mensagem para cada utilizador adicionado. Se tudo der certo, deverá aparecer “True”, indicando que a execução foi bem-sucedida.
Nesse caso, não vamos fazer uma introdução mais complexa de utilizadores, mas não descartamos fazê-lo em breve.
Se o que nos interessa é eliminar utilizadores de forma massiva, podemos usar um ficheiro para indicar os utilizadores que queremos eliminar. Este ficheiro também deve estar no formato “.csv”.
Esta lista deve conter apenas o nome dos utilizadores a serem excluídos num formato como o seguinte:
user
user01
user02
…
Uma vez criada a lista, devemos importá-la para que o script a carregue, o que fazemos com o seguinte comando:
$listadeusuarios=Import-Csv -Path borradousuarios.csv
Agora devemos lançar o script de exclusão de utilizadores, que tem um formato muito semelhante ao de criação de utilizadores massivos, embora baseado no comando de exclusão de utilizadores “Remove-LocalUser”. É mais simples, pois não precisamos de enviar parâmetros para este comando.
foreach ($i in $listadeusuarios)
{
Remove-LocalUser $i.user
}
A execução seria como exibido abaixo:
Imagem. Executamos o script para excluir utilizadores em massa
Alterações de password:
Uma tarefa realmente importante é poder alterar ou redefinir as passwords dos utilizadores da nossa organização, e é algo que geralmente demora algum tempo na operação diária, pelo menos em organizações com utilizadores não avançados ou com uma alta rotatividade de pessoal.
Para realizar esta tarefa, temos duas abordagens principais, dependendo de se sabemos a password atual ou não.
Se soubermos a password atual, iniciaremos o seguinte comando e o sistema responderá com o pedido da password atual:
Set-ADAccountPassword jioller
Se não soubermos a password anterior, podemos usar o comando “-Reset”:
Set-ADAccountPassword jioller -Reset
Imagem. Experimentamos as duas maneiras de alterar uma password
Desbloquear contas:
Se tiver um utilizador com uma conta bloqueada, pode desbloqueá-la com o comando “unlock-ADAccount” seguido do nome do utilizador, e para obter algumas informações sobre a tarefa, pode acompanhá-la do comando “-Verbose”.
unlock-ADAccount jioller -Verbose
Também é possível fazer uma simulação com o mesmo comando terminado com o comando “-WhatIf”.
unlock-ADAccount jioller -WhatIf
Imagem. Desbloqueamos um utilizador e simulamos um desbloqueio
Outras operações com utilizadores:
Às vezes, podemos precisar de modificar os dados de um utilizador, como adicionar uma descrição, o departamento ao qual pertence, a sua cidade ou muitos outros parâmetros. Para isso usaremos o comando “Set-ADUser”, indicando o nome de utilizador e o parâmetro que queremos configurar.
Um exemplo disto pode ser o seguinte comando no qual queremos adicionar uma descrição ao utilizador “jioller”:
Set-ADUser jioller -Description “Usuario de Nacho”
NOTA: As descrições devem ser colocadas entre parênteses para evitar problemas, especialmente se contiverem espaços em branco.
Imagem. Modificamos e verificamos a descrição e cidade de um utilizador
Gestão de Grupos:
Não queremos terminar o artigo sem examinar alguns tópicos relacionados com grupos de utilizadores no AD DS. Neste caso, veremos três pequenas operações que podemos fazer com os grupos e os utilizadores associados.
Para começar, como de costume nos nossos artigos, veremos como extrair informações de um grupo. Para ver os dados relativos a um determinado grupo, basta utilizar o comando “Get-ADGroup”, indicando o nome do grupo sobre o qual queremos essa informação como parâmetro. Assim, uma consulta de grupo ficaria desta forma:
Get-ADGroup “GrupoPrueba”
Não é necessário incluir as aspas (“), como se pode ver no screenshot.
Imagem. Consultamos informação sobre um grupo de AD DS
Outra das tarefas que podemos realizar é verificar os utilizadores que pertencem a um grupo específico, mostrando informações como o nome, o tipo de objeto ou o SID. Para realizar esta consulta, deve-se lançar o comando “Get-ADGroupMember”, indicando como parâmetro o nome do grupo sobre o qual se deseja obter a informação.
Get-ADGroupMember “GrupoPrueba”
Imagem. Listamos as informações sobre os utilizadores pertencentes a um grupo
Outra tarefa típica é adicionar um utilizador a um grupo existente com o comando “Add-ADGroupMember” seguido do grupo ao qual queremos adicionar o utilizador e, por último, o utilizador a adicionar. Neste ponto, devemos observar que usa o SamAccountName.
Add-ADGroupMember “GrupoPrueba” jioller
Imagem. Adicionamos um utilizador a um grupo existente com comandos do PowerShell
Infelizmente, este artigo não pode ser infinito, pois seria um monstro impossível de controlar, por isso ficamos por aqui, com a promessa de expandir a informação noutros artigos, com pequenas dicas ou com mais informação sobre a gestão de outros objetos e, claro, com um artigo dedicado a Gestão de Políticas de Grupo (Group Policy Management ou GPO) e outro às Políticas de Password (Granular Password Policies ou PSO).
Conclusões e observações sobre o AD DS server
Mais uma vez, temos de dizer que este não é o tutorial definitivo sobre a gestão de utilizadores do AD DS Server com o powerShell, pois poderíamos fornecer muito mais comandos, mas acreditamos que este artigo fornece alguns comandos realmente úteis para gestão básica.
Com o que foi exposto aqui podemos começar a gerir o AD DS, pelo menos no que diz respeito aos objetos (utilizadores e grupos), a começar pelas tarefas de criar utilizadores, eliminá-los, gestão básica, etc.
Como sempre, recomendamos que explore o PowerShell, pois o seu potencial é ilimitado e pode ser usado para gerir com eficiência toda a infraestrutura da Microsoft, tanto clientes, servidores e serviços, como certos elementos GNU/Linux.