Crie Relatórios de Computadores do Active Directory com PowerShell. Para encontrar qualquer coisa relacionada aos objetos de computador do diretório ativo (AD) e suas propriedades, vamos usar principalmente o cmdlet Get-ADComputer. Por exemplo, em um domínio do Active Directory, podemos usar o cmdlet Get-ADComputer do PowerShell para obter informações sobre os objetos de conta de computador (servidores e estações de trabalho). Este cmdlet é um dos mais úteis para pesquisar computadores AD por vários critérios.
Este artigo discute os muitos usos do cmdlet Get-ADComputer e como podemos transformá-lo em um relatório abrangente e valioso.
Vamos começar com o blog do artigo Crie Relatórios de Computadores do Active Directory com PowerShell.
Criar Relatórios de Computadores do Active Directory com Powershell
Pré-requisitos
Se quisermos acompanhar os scripts de exemplo neste artigo, certifique-se de ter o seguinte:
- Um ambiente do AD com pelo menos uma estação de trabalho associada ao domínio.
- Nível funcional do domínio – Windows Server 2016.
- Ferramentas de Administração do Servidor Remoto (RSAT) para Active Directory instaladas na sua estação de trabalho associada ao domínio.
- A versão mais recente do PowerShell, ou pelo menos o PowerShell 7.x e acima, é necessária para executar os scripts.
Bem, como criar relatórios de computadores do Active Directory com o PowerShell? Vamos descobrir.
Leia também Como criar relatórios de computadores/dispositivos do Active Directory usando o InfraSOS
Compreendendo o comando Powershell Get-ADComputer
Antes de começarmos, devemos nos familiarizar com o comando Get-ADComputer. Não precisamos de privilégios de administrador de domínio para obter informações do Active Directory. Usar uma conta de usuário regular membro do grupo de Usuários do Domínio ou Usuários Autenticados é suficiente.
Bem, o comando Get-Help, como de costume, fornece uma lista de todos os outros parâmetros para o cmdlet Get-ADComputer:
$command = Get-ADComputer
Get-Help $command
Saída de exemplo:
Alternativamente, podemos acessar a documentação oficial do comando Get-ADComputeraqui.
Após rolar pela longa lista de parâmetros em nossa linha de comando e documentação, podemos começar a escrever scripts. Lembre-se, o parâmetro mais crucial que acompanha o comando Get-ADComputer é o parâmetro Identity.
Para obter informações sobre um computador específico no domínio, use o parâmetro -Identity com o seu nome como argumento:
Get-ADComputer -Identity DC01
Aqui está a saída de exemplo:
DistinguishedName : CN=DC01,OU=Servers,OU=DC,OU=IT,DC=infrasos,DC=com
DNSHostName : DC01.infrasos.com
Enabled : True
Name : DC01
ObjectClass : computer
ObjectGUID : 87654321-1204-5578-0000-123462341264
SamAccountName : DC01
SID : S-1-5-21-123656780-1234667890-0986654321-1264
Como resultado, o cmdlet Get-ADComputer retornou apenas as propriedades fundamentais do objeto Computador do AD. No entanto, executar o comando acima fornece apenas as informações de nível superior sobre o objeto do computador. Então, se quisermos mergulhar mais fundo e exibir as propriedades disponíveis do objeto, podemos usar o parâmetro -Properties.
Para listar todas as propriedades do objeto, acrescente o parâmetro -Properties e adicione um valor de asterisco (*). O valor de asterisco é o valor de curinga que indica TODOS:
Get-ADComputer -Identity DC01 -Properties *
Saída de exemplo:
Por outro lado, podemos navegar dentro do console Usuários e Computadores do Active Directory (ou dsa.msc) e visualizar as propriedades a partir daí. Finalmente, selecione um objeto de computador e navegue até a guia Editor de Atributos para visualizar a lista de propriedades do objeto de computador.
Filtrando Resultados do Get-ADComputer
Uma desvantagem é que podemos exibir mais informações sobre coisas que não necessariamente precisamos. Usando o pipeline do PowerShell, o cmdlet Get-ADComputer nos permite exibir propriedades específicas do computador na linha de comando. Por exemplo, podemos deixar apenas os valores das propriedades Name e LastLogonDate na saída, encadeando o comando Format-Table à sintaxe principal:
Get-ADComputer -Identity DC01 -Properties * | Format-Table Name, LastLogonDate -Autosize
Exemplo de saída:
Aqui, o Windows PowerShell calcula as larguras das colunas com base nos dados reais exibidos se especificarmos o parâmetro AutoSize quando executamos o comando Format-Table. Em suma, este parâmetro torna as colunas legíveis.
No entanto, o comando anterior pesquisa apenas um objeto de computador AD único. Portanto, se quiséssemos informações sobre todos os computadores no domínio, podemos substituir o Identidade parâmetro com Filtro:
Get-ADComputer -Filter * -Properties * | Format-Table Name, Created -Autosize
Veja a saída de exemplo:
Temos uma tabela formatada simples contendo apenas dois campos: o nome do computador e a data de criação do objeto. Podemos adicionar outras colunas do objeto do Computador do AD a esta tabela adicionando propriedades na seção Format-Table do pipeline.
Basicamente, para obter informações sobre os objetos de computador em uma determinada Unidade Organizacional (OU), podemos usar o –SearchBase parâmetro:
Get-ADComputer -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Filter * -Properties * | Format-Table Name, Created -Autosize
Além disso, também podemos classificar os resultados da consulta inserindo o cmdlet Sort-ObjectSort-Object cmdlet na pipeline:
Get-ADComputer -Filter * -Properties * | Sort-Object Created | Format-Table Name, Created -Autosize
Na instrução anterior acima, o comando Sort-Object classifica os resultados do Get-ADComputer primeiro por Created e depois passa para o Format-Table para exibição.
Usando filtros de pesquisa com o Get-ADComputer
Usamos o Get-ADComputer cmdlet’s -Filter argumento para pesquisar vários computadores AD com base em critérios específicos. Como observado, podemos usar curingas e operadores de comparação lógica neste caso. Certamente, como filtros, só podemos usar atributos primários do objeto do computador.
Da mesma forma, utilizamos o Where-Object para aplicar filtros de pesquisa em atributos de computador estendidos. Os exemplos a seguir são mais práticos de como consultar e pesquisar objetos de computador no domínio usando o Get-ADComputer cmdlet.
Obtenha o número total de todos os computadores ativos e não bloqueados no Active Directory:
Pesquisamos computadores usando vários filtros ao mesmo tempo. Use operadores lógicos do PowerShell logical comparison operators para realizar isso.
(Get-ADComputer -Filter {Enabled -eq "true"}).Count
Exibir todos os hosts do Windows Server no domínio AD:
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*' }
Obtenha uma lista de todos os computadores em um OU específico cujos nomes começam com DC:
Get-ADComputer -Filter {Name -like "DC*"} -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Properties * | Format-Table Name
Ao pesquisar na UO, podemos usar o –SearchScope1 parâmetro para limitar nossa pesquisa apenas à raiz da UO. A -SearchScope2 opção executa uma pesquisa recursiva para computadores em todas as UOs.
Gerenciando Múltiplos Computadores com Get-ADComputer
Devemos usar o Foreach-Object loop para executar uma ação específica em todos os computadores na lista resultante. Neste exemplo, podemos consultar vários computadores AD remotamente usando Windows Management Instrumentation ou Common Information Classes:
Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Foreach-Object {
Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue |
Select-Object PSComputerName
}
Evidentemente, neste exemplo, se quisermos uma lista de hosts do Windows Server no domínio, juntamente com seu modelo e fabricante, usamos o mesmo método de loop e buscamos as propriedades do computador.
$Computers = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*'}
Foreach ($Computer in $Computers){
$Hostname = $Computer.Name
$ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
$Manufacturer = $Computer.Manufacturer
$Model = $Computer.Model
Write-Output "Name: $Hostname"
Write-Output "Manufacturer: $Manufacturer"
Write-Output "Model: $Model"
Write-Output " "
}
Então, as informações obtidas dos exemplos acima estão prontamente disponíveis através dos serviços de domínio uma vez que esses computadores fazem parte do AD. No entanto, nem todos os computadores têm suas propriedades anunciadas ao domínio. Como podemos obtê-las?
A seguir, fazemos uso do Invoke-Command. Dessa forma, este cmdlet do PowerShell executa comandos locais em computadores remotos. Por exemplo, suponha que precisemos executar um comando específico em todos os computadores em uma determinada OU. Neste exemplo, vamos usar o Invoke-Command para executar um comando de atualização de política de grupo em todos os servidores:
Get-ADComputer -SearchBase "OU=DC,DC=infrasos,DC=com" -Filter * |
%{ Invoke-Command -Computer $_.Name -ScriptBlock { gpupdate /force } }
Gerar Relatórios do PowerShell AD com Get-ADComputer
No Windows PowerShell, exportamos a saída de nossos comandos em vários formatos de relatório. Aqui estão alguns exemplos abaixo.
Primeiro, exportamos o resultado do comando Get-ADComputer para um arquivo de texto:
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2019*' } -Properties * |
Select Name, OperatingSystem |
Format-Table -AutoSize C:\Temp\2019_servers.txt
Em segundo lugar, também obtemos uma lista de todos os computadores e a exportamos para um arquivo valor separado por vírgulas(CSV):
Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Export-CSV All-Computers.csv -NoTypeInformation
Em terceiro lugar, também podemos exportar nosso relatório e obter um formato de página da web HTML com uma lista de todos os computadores e propriedades essenciais:
Get-ADComputer -Filter * -Properties * |
Select-Object Name,OperatingSystem |
ConvertTo-Html |
Out-File C:\ps\ad_all_computers.html
Deve ser parecido com isto:
Obrigado por ler Criar Relatórios de Computadores do Active Directory com o PowerShell. Vamos concluir.
Leia também Implantar Monitoramento do Azure AD
Conclusão de Relatórios de Computadores do Active Directory Usando o Powershell
Neste artigo, abordamos o comando Get-ADComputer de forma abrangente. Aprendemos que com este comando, podemos obter uma lista detalhada de propriedades e informações para uma máquina específica. Além disso, com uma lista exaustiva, aprendemos como filtrar essas propriedades apenas para buscar as informações que precisamos.
Source:
https://infrasos.com/create-active-directory-computer-reports-with-powershell/