Fundo preto com o título do artigo à esquerda (O que são comandos PowerShell e como eles são usados?). À direita, temos a palavra PowerShell em um fundo vermelho, com scripts coloridos ao fundo.

Grande parte dos programadores conhece os comandos PowerShell, já que para gerenciar e auditar o Active Directory (AD) do Windows, este é um dos jeitos mais comuns. Porém, para utilizá-los, é necessário que o programador tenha bastante conhecimento na ferramenta, além de, claro, conhecimento em programação e nos scripts que são específicos para ele.

Quer entender melhor o que são comandos PowerShell, para o quê eles servem, como utilizá-los e, claro, uma maneira muito mais eficaz de gerenciar o AD do Windows? Leia este artigo!

 O que é shell? 

Porém, antes de iniciar precisamos entender a definição de shell.

Para compreender melhor o significado de shell em programação, podemos pensar na tradução da palavra para o português, que é concha ou casca. Por isso, conseguimos interpretar o termo como “uma camada em torno de alguma coisa”.

Fazendo as comparações necessárias, shell é o programa que envolve um software, e como resultado, é a interface que o usuário utiliza para interpretar e fazer comandos, ações, gestões e configurações do software.

Inicialmente, shell era destinado exclusivamente para sistemas Linux, porém com o passar dos anos, isso veio a mudar.

Cada shell possui uma interface diferente, e consequentemente, são executados de maneira diferente também. Eles podem ser:

  • CLI (Command Line Interface): interface baseada em linhas de comando, ou seja, scripts. Por conta disso, cada comando precisa ser digitado para que uma execução ocorra;

  • GUI (Graphical User Interface): interface gráfica, onde os comandos não precisam ser digitados, e consequentemente, para que uma execução ocorra, basta acioná-la.

Agora que conseguimos entender o que é e qual a função de um shell, conseguimos ir para o ponto central deste artigo.

O que é PowerShell  (PS)

Ele é uma ferramenta open-source do tipo “shell” e que utiliza interface CLI. Ou seja, é uma linguagem de programação altamente potente e robusta para automatizar ações e configurações em diversos tipos de sistemas operacionais (SO).

Segundo o próprio site da Microsoft, ela define o PowerShell como “uma solução de automação de tarefas multiplataforma que consiste em um shell de linha de comando, em uma linguagem de script e uma estrutura de gerenciamento de configuração“.

Como o PowerShell surgiu? 

Por ser considerado fraco, profissionais de todo o mundo sabiam que shell do Windows precisava de melhorias, e por conta disso, a Microsoft desenvolveu um novo para seus sistemas operacionais: o PowerShell.

Lançado em 2006, junto com o lançamento do Windows Vista e do novo pacote Office, ele foi pouco explorado midiaticamente, já que o novo SO da empresa americana era considerado como uma revolução e também o melhor do mercado até então.

Porém, após todo barulho do Windows Vista ter passado, desenvolvedores começaram a perceber o quanto o Windows PowerShell (WPS) era uma ferramenta poderosa.

O que são os comandos PowerShell? 

São os códigos e scripts que são usados para efetuar uma ou mais ações no dispositivo. Cada comando nativo é chamado de cmdlet (comand-lets) e pode ser gravados em qualquer linguagem .NET compilada, além de que cada cmdlet tem a seguinte estrutura:

verbo + substantivo

onde o verbo é utilizado para efetuar o comando desejado e o substantivo o local.

Ademais, cada comando emprega uma sintaxe diferente, onde cada uma delas contém caracteres especiais para indicar uma especificidade diferente.

Por exemplo, ao adicionar uma cmdlet no WPS, os caracteres [ ] e ( ) tem significados diferentes. Sendo assim, é necessário inserir cada símbolo cuidadosamente.

 Como usar os comandos PowerShell? 

Por ser uma linguagem extremamente potente, é possível fazer mais do que apenas configurar ações e comandos nela. Configurando os scripts corretamente, conseguimos automatizar um grande volume de ações em inúmeros dispositivos, além de também poder automatizar praticamente qualquer tarefa no AD.

Alguns dos tipos de comandos PowerShell mais comuns são:

  • Lidar com grandes lotes de arquivos e dispositivos;

  • Controlar o acesso a grandes números de arquivos;

  • Configurar novas máquinas,

  • Automatizar processos.

Além disso, quando falamos do PS em programas Microsoft, é possível fazer outras atividades, como:

  • Desenvolvimento back-end;

  • Web scraping;

  • Processamento de XML;

  • Tratamento de imagens;

  • Programação de redes.

É importante lembrar que antes de executar quaisquer comandos PowerShell, é necessário alterar suas políticas de execução, já que dependendo da ação solicitada, ela pode ser bloqueada.

A seguir mostraremos 3 modelos de comandos PowerShell para exemplificar.

1. Desabilitar usuário do Active Directory 

A seguinte sintaxe exemplifica como desabilitar um usuário no AD.

$targetOU = “OU=Disabled,DC=exemplo,DC=com”

# Obtenha todos os usuários desativados
$disabledUsers = Get-ADUser -Filter { Enabled -eq $false }

foreach ($user in $disabledUsers) {
    # Verifique se o usuário já está na OU de destino
    $currentOU = (Get-ADUser $user -Properties DistinguishedName).DistinguishedName

    if ($currentOU -notlike “*Disabled*”) {
        # Mova o usuário para a OU de destino
        Move-ADObject -Identity $user.DistinguishedName -TargetPath $targetOU
        Write-Host “Usuário $($user.SamAccountName) movido para $targetOU”
    }
}

2. Remover permissões de pastas de um usuário no AD 

Para remover permissões de um usuário, é necessário adicionar esta sintaxe no WPS:

$folderPath = “C:\Caminho\Para\Sua\Pasta”
$userName = “dominio\usuario”  # Use o formato ‘dominio\usuario’ ou ‘usuario@dominio.com’

$acl = Get-Acl $folderPath

$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($userName, “FullControl”, “Allow”)

$acl.RemoveAccessRule($accessRule)

Set-Acl $folderPath $acl

Write-Host “Permissões do usuário $userName foram removidas da pasta $folderPath.”

3. Remover usuários do AD que estão inativos por mais de 30 dias 

Import-Module ActiveDirectory

$limitDate = (Get-Date).AddDays(-30)

$inactiveUsers = Get-ADUser -Filter { LastLogonDate -lt $limitDate } -Properties LastLogonDate

foreach ($user in $inactiveUsers) {
    Write-Host “Excluindo usuário: $($user.SamAccountName), último login em: $($user.LastLogonDate)”
    
    Remove-ADUser -Identity $user.SamAccountName -Confirm:$false
}

Write-Host “Processo de exclusão concluído.”

Como visto, os comandos PowerShell são muito úteis e potentes para realizar tarefas em massa. Porém, para aqueles que não sabem programar ou mesmo não são familiares com o WPS, essa pode ser uma opção um pouco complexa e demorada de aprender.

Mas e se eu te contar que existe outro método muito mais eficaz e descomplicado?

Simplifique com o  AD360 da ManageEngine 

O AD360 é considerado uma das melhores soluções do mercado para o gerenciamento do Active Directory! Isso porque, com sua interface gráfica e intuitiva, é possível fazer todo e qualquer tipo de configuração e automação em poucos cliques!

Para você entender como a simplicidade do AD360 é realmente seu ponto forte, incorporado à robustez de uma ferramenta poderosa, para remover permissões de usuário, poucos passos são necessários.

No AD360, na aba de automação, você consegue facilmente fazer essa remoção, criando regras para usuários, períodos, tarefas e permissões! Além disso, por ser altamente customizável, é possível adicionar ou remover campos aos quais você achar necessário.

Captura de tela do AD360, da ManageEngine, demonstrando como remover usuários inativos por mais de 30 dias

Captura de tela do AD360, da ManageEngine, demonstrando como remover usuários inativos por mais de 30 dias

Agora, caso você queira automatizar a remoção de usuários inativos por mais de 30 dias, com alguns cliques isso é possível. Dessa maneira, não é mais necessário criar regras complexas que exigem tempo, além de ter que ficar adicionando e configurando sempre que necessário. Veja como o AD360 faz isso de maneira simples!

Nas imagens abaixo você consegue ver como, além de automatizar essa ação, você também consegue personalizar da maneira que melhor se ajusta as necessidades do seu negócio.

Captura de tela do AD360, da ManageEngine, demonstrando como desabilitar usuários inativos por mais de 30 dias

Captura de tela do AD360, da ManageEngine, demonstrando como desabilitar usuários inativos por mais de 30 dias

E para ter mais tranquilidade, as automações podem ser configuradas e automatizadas, fazendo com que gestores de TI possam focar naquilo que realmente importa. Adicionalmente, os relatórios que o AD360 fornece dão uma visão holística de todos os dados dos ADs que estão sendo monitorados.

Tudo isso sempre contando com um alto nível de segurança, com gerenciamento do ciclo de vida de identidade, MFA, SSO e IA.

Descomplique sua TI com a ManageEngine e experimente o AD360 por 30 dias gratuitamente sem compromisso!