Início > Active Directory, Power Shell, Scripts > Automatizando tarefas com PowerShell–Administrando Active Directory Users and Computers

Automatizando tarefas com PowerShell–Administrando Active Directory Users and Computers

22 de fevereiro de 2016 Deixe um comentário Go to comments

Saudações,

Depois do nosso último post, resolvi investir um pouco mais de tempo em entender bem o PowerShell e, medindo o tempo que usava para entregar determinadas tarefas usando click de mouse e o tempo que levei para executar as mesmas tarefas via cmdlets, fiquei mais interessado ainda em me aprofundar no tema.

Para tanto, recomendo que você acesse o Microsoft Virtual Academy e procure pelos treinamentos de PowerShell disponíveis. Tente também baixar pelo Microsoft Press, os livros disponíveis. Além disso, procure também no TechNet todo conteúdo disponível sobre PowerShell. Realmente, você vai gostar e, como disse no meu último post, vai enteder que, o futuro do ITPro passa e fica pelo Powershell.

A idéia é mostrar como o Powershell pode facilitar seu dia a dia nas mais variadas ferramentas Microsoft, portanto, começo hoje uma série de posts onde mostro os principais comandos de PowerShell para AD, ADFS, Web Application Proxy, AD CS, IIS,  DNS e DHCP. Lembrando que não sou expert em PowerShell, portanto, o espaço está aberto aos especialistas para que nos aprofundemos no tema.

Neste primeiro post, trago para vocês uma lista de comandos úteis para administração do AD e que vai automatizar algumas tarefas no seu dia a dia. Então, vamos lá! Vamos pensar num domínio fictício chamado uilson.net e uma conta com nome Uilson Souza e username uilson.souza:

Você começa pelo import do módulo de comandos do Active Directory, digitando o cmdlet abaixo:

Import-Module ActiveDirectory

1. Criando/removendo uma nova conta de usuário

O exemplo abaixo mostra a criação de um usuário no seu domínio. O comando mostra como criar o usuário definindo nome, username, display name, diz que a conta está habilitada, define a senha inicial, força alteração de senha no primeiro logon e diz em que OU a mesma ficará:

New-ADUser -Name "Uilson Souza" -SamAccountName uilson.souza -DisplayName "Uilson Souza" -Title "Uilson Souza" -Enable $true -ChangePasswordAtLogon $true -AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -force) -PassThru -Path "OU=Users,DC=uilson,DC=net"

Para remover uma conta de usuário use o seguinte parâmetro:

Remove-ADUser –Identity “uilson.souza” – remove a conta de usuário mas antes é exibida uma mensagem de confirmação

Remove-ADUser –Identity “uilson.souza” –confirm:$false – remove a conta direto sem nenhuma mensagem de confirmação

2. Desbloqueando uma conta de usuário:

Aquele momento em que um usuário reclama que sua conta está bloqueada. Ele não é um usuário comum…trata-se de um diretor ou o presidente da sua corporação. Você (esperto como é) não vai fazer um usuário VIP entrar na fila dos chamados. Nesse caso o comando abaixo ajuda bastante:

Unlock-ADAccount -Identity uilson.souza

3. Listando contas com opção "password never expires":

Contas de serviço ou aquelas usadas em tarefas específicas que não podem entrar na política de alteração de senha da empresa. Nesse caso, ela é criada com a opção “Password never expires”. Para saber quais contas têm essa opção habilitada você pode usar a linha abaixo:

Search-ADAccount -PasswordNeverExpires | Select-Object Name,ObjectClass,PasswordNeverExpires | Export-Csv arquivo.csv

A parte “| Export-Csv arquivo.csv” significa que o resultado desta linha irá ser armazenado em um arquivo csv que, posteriormente poderá ser tratado no Excel.

4. Listando usuários de um determinado grupo:

Quem são os usuários que estão em um determinado grupo? Você não precisa mais abrir o snap-shot AD Users and Computers para isso e ainda poderá exportar a listagem para um arquivo:

Get-ADGroupMember -Identity "Nome_do_Grupo" | Select-Object Name,samAccountName | Export-Csv C:\TEMP\arquivo.csv

5. Criando um grupo dentro de uma OU:

Não basta simplesmente criar um grupo…ele precisa estar na OU certa para que seus membros recebam as políticas pré-definidas:

New-ADGroup -Name Marketing -GroupCategory Security -GroupScope Global -DisplayName Marketing -Path "OU=Users,DC=uilson,DC=net"

6. Adicionando usuário em um grupo:

Após criar o grupo, você precisa adicionar os membros nele:

Add-ADGroupMember NomedoGrupo uilson.souza – exemplo de inserção de um único 1 usuário

Add-ADGroupMember NomedoGrupo uilson.souza,jose.santos,paulo.oliveira – exemplo de inserção de vários usuários

7. Removendo usuário de um grupo:

Remove-ADPrincipalGroupMembership -Identity "uilson.souza" -MemberOf "NomedoGrupo" -Path "OU=Users,DC=uilson,DC=net"

8. Lista usuários com a conta desabilitada:

Você precisa saber quais contas estão desabilitadas. Para tal, a linha abaixo traz a informação desejada com as informações de Nome e Username:

Get-ADUser -Filter * -SearchBase "OU=Users,DC=uilson,DC=net" | where { $_.enabled -eq $False} | Select-Object Name,SamAccountName

9. Lista contas que não logam a mais de 30 dias

Nesse pequeno script você define que quer saber as contas que não efetuam logon a mais de 30 dias:

$timespan = New-TimeSpan -Days 30

Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $timespan

Você ainda pode incrementar a linha 2 do script dizendo que as contas que não logam a mais de 30 dias já serão desativadas:

Search-ADAccount -UsersOnly -AccountInctive -TimeSpan $timespan | Disable-ADAccount

Essa opção de comando pode ser executada também a partir do PowerShell ISE (digitar ISE na linha de comando do PS – vou mostrar um exemplo abaixo).

10. Desabilitando uma conta em particular:

Comando para desabilitar uma conta. Imagine que um gerente de um setor qualquer te avisa de um funcionário está sendo desligado e que já quer o bloqueio da conta dele. Na linha abaixo vc já tem como atende-lo no mesmo instante:

Disable-ADAccount – Identity "uilson.souza"

OBS: Espero que o usuário de nenhum de vocês esteja entre as aspas duplas do comando acima…rs..rs..rs.rs

11. Habilitando uma conta em particular:

Em algumas empresas, os usuários em férias têm suas contas desabilitadas. Dessa forma o próprio não vai poder usa-la remotamente por uma série de questões trabalhistas envolvidas. No retorno do mesmo ao trabalho, o comando abaixo pode ser usado para reativar a conta:

Enable-ADAccount –Identity “uilson.souza”

12. Lista usuários de uma OU:

Você tem diversas OU´s separadas por departamento. Um belo dia alguém diz que precisa saber quem são os usuários do setor financeiro. O comando abaixo traz a informação que pode, posteriormente ser exportada para um arquivo:

Get-ADUser -Filter * -SearchBase "OU=Financeiro,OU=Users,DC=uilson,DC=net" | Select-Object Name,SamAccountName

13. Lista os dados de um usuário pelo nome:

Na linha abaixo eu listo todos os “Uilson´s” que existem em meu domínio trazendo informações de Nome e Username:

Get-ADUser -Filter ‘Name -like "uilson*"’ | FT Name,SamAccountName –A

OBS: No meu caso, Uilson com “U” raramente irá haver mais de 1…rs..rs..rs

14. Gerando uma lista de usernames e já inserindo em um grupo a partir de uma lista em TXT:

Agora, vamos sair um pouco do shell de comandos do PowerShell e vamos usar o PowerShell ISE para o pequeno script abaixo. Imagine que você precisa inserir uma quantidade alta de usuários em um determinado grupo, sendo que esses usuários já possuem conta de domínio. Você teria que seguir os passos da dica número 6 deste post, digitando um por um? Não!!!! Um script PowerShell resolve esse problema. Tudo que você precisa é ter a lista de nomes em um TXT, pedir que o PowerShell consulte no AD o username destes usuários a partir dos nomes da lista e já os adicione no grupo que você precisa que eles estejam:

Import-Module ActiveDirectory
ForEach ($Item in (Get-Content C:\UserList.txt)){
    Get-ADUser -Filter ‘Name -eq $Item’ | Add-ADPrincipalGroupMembership -MemberOf NomedoGrupo

}

Conforme falado anteriormente, ao digitar ISE na linha de comandos do PowerShell, você abre o PowerShell ISE:

image

image

O PowerShell ISE é fantástico! Note que, você tem a parte em que pode escrever o script, abaixo a tela azul onde vê a execução e ao lado direito você pode consultar todos os comandos PowerShell com explicação detalhada.

15. Lista todos os DC´s de seu domínio:

Para saber quais os domain controllers do seu ambiente:

Get-ADDomainController -Filter { name -like "*" }

Essa foi uma lista básica de comandos que vão ajudar e automatizar suas tarefas no dia a dia. Fiz um métrica de tempo entre as atividades feitas a partir de interface gráfica e as mesmas feitas em PowerShell. O tempo cai para algo em torno de 80 a 90% a menos. Então, ao menos para este que vos escreve, não há mais dúvidas…vamos mudar o foco e usar PowerShell.

Reitero que não sou especialista no tema e convido os experts a agregarem conhecimento e assim vamos nos ajudando mutuamente. Existem muitos outros comandos e parâmetros que podem ser usados juntamente com o conteúdo deste post para que possamos administrar e facilitar o dia dia no Active Directory. Aqui deixo os mais usados, mas, você pode ir além e aprender mais.

Queria agradecer o Anderson Thiago. que me ajudou muito em um fórum no TechNet elucidando alguns pontos de Power Shell – https://social.technet.microsoft.com/Forums/pt-BR/8249c2f2-af4e-417f-982c-8a8f5db05b5a/gerando-lista-de-usurios-via-powershell?forum=winsrv2008pt

No próximo artigo vamos falar sobre comandos PowerShell para agilizar a implementação e administração de um ambiente de proxy reverso com Web Application Proxy e AD Federation Services.

Espero que o conteúdo seja útil!

Abraços

Uilson

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: