Crie Relatórios de Unidade Organizacional do Active Directory com PowerShell

Crie relatórios de Unidades Organizacionais (OU) do Active Directory com PowerShell. Uma unidade organizacional (OU) é um contêiner do Active Directory (AD) onde podem ser armazenadas as informações de usuários, grupos, computadores e outras OUs. Cada domínio AD pode ter sua própria hierarquia de unidades organizacionais. Este artigo abordará o gerenciamento de OU e como usar scripts do Windows PowerShell para mover, criar, excluir e gerar relatórios de OU no AD e para vincular e aplicar uma Política de Grupo a uma OU.

Crie relatórios de Unidades Organizacionais do Active Directory com PowerShell

Pré-requisitosSe você quiser seguir os exemplos de scripts deste artigo, você precisará instalar os componentes pré-requisitos:

Se quisermos acompanhar os scripts de exemplo neste artigo, precisaremos instalar os componentes pré-requisitos:

Bem, como criar relatórios de OU do Active Directory com o PowerShell? Vamos descobrir.

Compreendendo os comandos de Unidade Organizacional

A Microsoft Active Directory domain container that can hold users, groups, and computers is an organizational unit (OU). It is the smallest unit to which a Windows system administrator can assign a Group Policy setting or account permission. An organizational unit may contain multiple OUs, but each attribute within the containing OU must be distinct.

Objetos de outros domínios não podem ser contidos dentro das unidades organizacionais do Active Directory. As seções a seguir abordarão os comandos fundamentais para gerenciar UOs.

Crie UOs no Active Directory com o PowerShell

Podemos criar uma nova unidade organizacional no AD usando o comando New-ADOrganizationalUnit e especificando o nome de um novo objeto de OU. O Windows PowerShell criará por padrão a Unidade Organizacional na raiz do domínio. Por exemplo, o seguinte comando criará uma OU chamada TI no Controlador de Domínio (DC):

New-ADOrganizationalUnit “IT

Se precisarmos de um caminho LDAP de OU diferente, use o parâmetro -Path do cmdlet para especificar seu nome distinto (DN):

New-ADOrganizationalUnit “IT” –Path “OU=Users,DC=InfraSOS,DC=com”

Mova uma OU no Active Directory com PowerShell

Se precisarmos mover uma OU para outro local, use o Move-ADObject cmdlet. É essencial notar que não devemos proteger a OU de destino de exclusão acidental. Caso contrário, use o seguinte comando para remover a proteção:

Set-ADOrganizationalUnit -Identity "OU=IT,OU=Users,DC=InfraSOS,DC=Com" -ProtectedFromAccidentalDeletion $False

Agora podemos mover a OU para outro local:

Move-ADObject -Identity "OU=Regions,OU=Managers,DC=InfraSOS,DC=Com" -TargetPath "OU=IT,DC=InfraSOS,DC=Com"

Renomear uma OU no Active Directory com o PowerShell

Use o Rename-ADObject cmdlet para renomear uma unidade organizacional. O parâmetro Identity especifica o AD objeto a ser renomeado e requer o DN ou GUID. Por exemplo, este comando muda o nome da OU IT para Marketing:

Rename-ADObject -Identity "OU=Regions,OU=IT,DC=InfraSOS,DC=COM" -NewName Marketing

Também podemos usar o Get-ADOrganizationalUnit cmdlet com o -Filter parâmetro, que não requer o caminho LDAP completo para a OU. No entanto, esse cmdlet pesquisará todo o AD e o script aplicará a ação do comando a todas as Unidades Organizacionais com o termo de pesquisa em seus nomes:

Get-ADOrganizationalUnit -Filter "Name -eq 'Zones'" | Rename-ADObject -NewName Area

Discutiremos mais sobre os comandos Get OU uma vez que comecemos a gerar relatórios.

Aplicando uma Política de Grupo a uma OU no Active Directory com PowerShell

Para atribuir uma Política de Grupo a uma Unidade Organizacional, podemos usar o comando New-GPLink, que vincula o Objeto de Política de Grupo (GPO) especificado e a Unidade Organizacional. Além disso, podemos identificar qualquer uma das seguintes propriedades para o link:

  • Habilitado – Se o link tiver um status Habilitado, as configurações processadas do GPO serão aplicadas quando a Política de Grupo for para o site, domínio e UO.
  • Forçar – Se o link tiver um status Forçar, não podemos bloquear a UO em um contêiner de nível inferior.
  • Ordem – O status Ordem especifica a precedência das configurações do GPO.

Por exemplo, o seguinte comando vincula o GPO Block à Unidade Organizacional IT com o link tanto ativado quanto impresso:

New-GPLink -Name "Block" -Target "OU=Districts,OU=IT, DC=InfraSOS, DC=com" -LinkEnabled Yes -Enforced Yes

Mova Usuários e Computadores para uma Nova OU em um AD com PowerShell

Depois de criarmos uma Unidade Organizacional e, opcionalmente, vinculá-la a um GPO, populemos-a com usuários e computadores. O Move-ADObject cmdlet no PowerShell move qualquer objeto ou conjunto de objetos do diretório ativo para uma OU diferente. O Identity parâmetro indica qual objeto deve ser realocado Active Directory objeto ou contêiner.

É crucial lembrar que devemos inserir o caminho completo do objeto LDAP ou SID; não podemos usar seu SamAccountName. O exemplo a seguir mostra como mover um usuário para a OU TI:

Move-ADObject -Identity "CN=marion,CN=Users,DC=InfraSOS,DC=com" -TargetPath "OU=IT,OU=Users,DC=InfraSOS,DC=com"

Use a sintaxe exata para mover objetos de computador . Por exemplo, o seguinte comando transferirá o computador DESKTOP-01 para o contêiner Computadores:

Move-ADObject -Identity "CN=DESKTOP-01,OU=Computers,DC=InfraSOS,DC=com" -TargetPath "CN=Workstations,DC=InfraSOS,DC=com"

Mover em massa computadores do AD e usuários para outra OU

Se tivermos uma lista predefinida de objetos a serem movidos, podemos salvá-la como um arquivo de texto e, em seguida, importá-la para o Active Directory. Prepare sua lista adicionando um objeto AD por linha. O arquivo de texto contendo a lista deve ser algo assim:

Use este script do PowerShell para mover contas de usuário do AD listadas em um arquivo de texto:

$destOU =  "OU=Users,OU=IT,DC=InfraSOS,DC=com"
$usersList = Get-Content -Path "C:\temp\users.txt"

$usersList  | ForEach-Object {
     $userName  = (Get-ADUser -Identity $_.Name).distinguishedName
     Move-ADObject  -Identity $userName  -TargetPath $destOU
 }

Para mover contas de computador do AD listadas em um arquivo de texto, use o seguinte script do PowerShell:

$computers = Get-Content -Path "C:\Temp\Computers.txt"

$destOU =  "OU=Computers,OU=IT,DC=InfraSOS,DC=com"
ForEach( $computer in $computers){
    Get-ADComputer $computer |
    Move-ADObject -TargetPath $destOU
}

Remover uma OU do Active Directory com o PowerShell

ORemove-ADOrganizationalUnitcmdlet remove uma OU. No entanto, não devemos proteger a OU de exclusão acidental. Usando oGet-ADOrganizationalUniteSet-ADOrganizationalUnitcmdlets, podemos remover a opção de exclusão não intencional para cada OU com a palavra Zones em seu nome:

Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Set-ADOrganizationalUnit  -ProtectedFromAccidentalDeletion $False

Use o seguinte cmdlet para remover todas as OUs que contêm Zones em seu nome do AD:

Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Remove-ADOrganizationalUnit –Recursive

O sistema nos solicitará confirmar a exclusão:

Note que o-Recursiveparâmetro remove tanto a OU quanto todos os seus objetos filhos. O AD excluirá os objetos filhos mesmo que a proteção contra exclusão esteja ativada para eles.

Gerenciando Unidades Organizacionais no AD

Agora que discutimos os comandos básicos e parâmetros envolvendo Unidades Organizacionais, vamos discutir como podemos gerar relatórios de OU com PowerShell.

Obter uma Lista de Todas as OUs com o PowerShell

Vamos usar o Get-ADOrganizationalUnit cmdlet. Primeiro, classifique por CanonicalName. Este comando exibe uma estrutura de OU mais fácil de ler.

Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
Format-Table CanonicalName, DistinguishedName

O exemplo a seguir é a saída no PowerShell quando executamos o comando:

A saída com todas as OUs no AD é uma excelente lista. Mas como sabemos se a OU contém algum usuário?

Obter uma Lista de Todas as OUs, Incluindo Contagem de Usuários, com PowerShell

Gostamos de usar o PowerShell para obter uma lista das OUs, incluindo a contagem de usuários. Este comando nos dirá se há usuários na OU.

Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
ForEach-Object {
    [pscustomobject]@{
        Name          = Split-Path $_.CanonicalName -Leaf
        CanonicalName = $_.CanonicalName
        UserCount     = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
    }
}

Ele exibirá a saída com a propriedade da coluna UserCount. Se o valor da propriedade UserCount for zero, a OU não possui usuários. Não aparecerá se a OU contiver um objeto de computador. Este comando verificará e exibirá apenas a contagem de usuários.

Exportar OUs no AD para um Arquivo CSV com PowerShell

Queremos exportar a lista de OUs no AD agora que a vimos. Portanto, o script usará PowerShell para obter as Unidades Organizacionais e exportá-las para um arquivo de texto.

$results = Get-ADOrganizationalUnit -Properties CanonicalName -Filter * | Sort-Object CanonicalName |
ForEach-Object {
    [pscustomobject]@{
        Name          = Split-Path $_.CanonicalName -Leaf
        CanonicalName = $_.CanonicalName
        UserCount     = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
    }
}
$results | Out-File C:\export_OUs.txt -Encoding UTF8

Altere a última linha para o seguinte comando se quisermos exportar para um arquivo CSV:

$results | Export-Csv -Path C:\export_OUs.csv -NoTypeInformation -Encoding UTF8

Encontre o arquivo exportado na localização especificada após executar o comando acima.

Obrigado por ler Criar relatórios de Unidades Organizacionais do Active Directory com o PowerShell. Vamos concluir agora.

Conclusão de Criar relatórios de Unidades Organizacionais do Active Directory com o PowerShell

Agora que aprendemos como gerenciar UOs no Active Directory usando scripts do PowerShell, podemos automatizar várias operações relacionadas ao gerenciamento de UOs e gerar relatórios de acordo. Certifique-se de habilitar a funcionalidade de Lixeira do Active Directory antes de executar esses comandos, para poder desfazer facilmente quaisquer exclusões acidentais. Também é importante acompanhar cuidadosamente todas as mudanças em suas unidades organizacionais.

Confira nosso conteúdo sobre o PowerShell em nosso blog aqui.

Source:
https://infrasos.com/create-active-directory-ou-reports-with-powershell/