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é-requisitos Se 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:
- Nível funcional de domínio – Windows Server 2016.
- Ferramentas de Administração de Servidores Remotos (RSAT) para Active Directory instaladas em seu computador ingressado no domínio.
- A versão mais recente do PowerShell, ou pelo menos PowerShell 5. x e acima são necessárias para executar os scripts.
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.
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?
Leia também Veja os Relatórios de Grupo do Active Directory
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.
Leia também Implantar Relatórios de Usuários do Office 365
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/