Get-ADComputer- Cómo encontrar y exportar computadoras AD PowerShell

¿Necesita exportar todas las computadoras desde una unidad organizativa o buscar una computadora en su Active Directory? ¿O quieres contar cuántas computadoras tienes? Podemos usar el Get-ADComputer cmdlet en PowerShell para extraer rápidamente información de la computadora del AD.

El Directorio Activo contiene todos los equipos que son miembros de nuestro dominio.

La consola de administración es excelente para buscar una sola computadora.

Pero cuando desea obtener detalles de una o varias computadoras, entonces necesitamos usar PowerShell.

En este artículo, vamos a echar un vistazo a cómo utilizar el Get-ADComputer cmdlet en PowerShell.

También le daré algunos ejemplos útiles cuando se trata de buscar y exportar computadoras AD. Y como beneficio adicional, si ha agregado un guion completo para exportar sus equipos de Active Directory.

Instalar el módulo de directorio activo

Para poder usar el cmdlet Get-ADComputer en PowerShell, deberá tener instalado el módulo de Active Directory.

De forma predeterminada, está instalado en el controlador de dominio, pero en Windows 10 u 11 deberá instalarlo.

Puede ejecutar el siguiente comando de PowerShell en Windows 10 u 11 para instalar el módulo:

Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”

Búsqueda de equipos con Obtener ADComputer en PowerShell

El cmdlet Get-ADComputer nos permite encontrar objetos informáticos en Active Directory y extraer información de ellos.

El verdadero poder de este cmdlet es que viene con diferentes opciones para encontrar esos objetos de la computadora.

Tenemos las siguientes opciones a la hora de encontrar objetos:

  • Identidad – Encuentra equipos basados ​​en su nombre. Esto devolverá solo una computadora
  • Filtrar – Recuperar múltiples objetos basados ​​en una consulta
  • Filtro LDAP – Use una cadena de consulta LDAP para filtrar los objetos de la computadora
  • Base de búsqueda – Especifique la ruta de Active Directory (OU) para buscar en
  • Ámbito de búsqueda – Especifique qué tan profundo desea buscar (nivel base, un nivel o subárbol completo)

El parámetro de identidad se usa principalmente cuando conoce el SAMAccountName de la computadora (nombre de la computadora).

Esto le permite seleccionar una sola computadora de Active Directory y ver las propiedades de la cuenta.

Get-ADComputer -identity la-computer-22
Obtener ADComputer
Obtener ADComputer

Esto devolverá las propiedades básicas de la computadora. Podemos usar el parámetro -properties para recuperar más información de la computadora.

Explicaré más sobre cómo recuperar diferentes propiedades más adelante en este artículo, pero si desea ver toda la información posible sobre una cuenta de computadora, use el siguiente comando:

Get-ADComputer -identity la-computer-22 -properties *

Obtener base de búsqueda de ADComputer

La mayoría de las veces, cuando desea recuperar computadoras de Active Directory, desea reducir la base de búsqueda en OU.

Para hacer esto, podemos usar el parámetro -SearchBase para el cmdlet Get-ADComputer. Esto nos permite especificar la OU (distinguishedName) donde queremos buscar.

El nombre distinguido es la ruta completa de la unidad organizativa, que escribimos desde la unidad organizativa hacia arriba en el árbol hasta el nombre de dominio de AD.

Tome la siguiente estructura de AD, queremos obtener todas las computadoras del sitio de Amsterdam:

Equipos de directorio activo
Ruta de la base de búsqueda

La cadena base de búsqueda, en este caso, sería:

    1              2           3         4        5
"OU=Computers,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL"

Por lo tanto, para obtener todas las computadoras del sitio Amsterdam, podemos usar el siguiente comando de PowerShell:

Get-ADComputer -Filter * -SearchBase "OU=Computers,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" | ft

Uso de SearchScope

El parámetro -SearchBase devolverá todas las computadoras de las unidades organizativas especificadas y anidadas.

Al usar el parámetro -SearchScope, podemos especificar qué tan profundo o no queremos buscar a través del árbol de Active Directory.

Digamos que queremos obtener todas las computadoras de Amsterdam, excepto las computadoras que están en stock:

unidad organizativa anidada

Si usáramos la base de búsqueda que creamos anteriormente, se devolverán todas las computadoras, incluidas las que están en stock, un total de 15 computadoras.

$searchBase = "OU=Computers,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL"

$computers = Get-ADComputer -Filter * -SearchBase $searchBase
$computers.count   # Returns 15

Para excluir las computadoras que están en stock, podemos usar el parámetro SearchScope. Esto nos permite limitar la base de búsqueda solo al nivel actual:

$searchBase = "OU=Computers,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL"

$computers = Get-ADComputer -Filter * -SearchBase $searchBase -SearchScope OneLevel
$computers.count    # Returns 12

Uso del parámetro Filtro

El cmdlet Get-ADComputer también es una excelente manera de encontrar una o varias computadoras en su AD. Aunque el objeto de la computadora no contiene mucha información, aún podemos usar un par de propiedades para filtrar.

Echemos un vistazo a un par de ejemplos de uso común para encontrar computadoras:

Podemos encontrar una computadora basada en una parte del nombre de la computadora con el filtro -like:

Get-ADComputer -Filter "Name -like '*workstation*'" | ft

Tenga en cuenta el comodín, esto significa que puede haber algo delante y después de la palabra «estación de trabajo».

Obtenga computadoras basadas en el sistema operativo

Active Directory también realiza un seguimiento de todos los sistemas operativos en las computadoras.

Entonces también podemos obtener todas las computadoras que ejecutan Windows 10 Pro, por ejemplo:

Get-ADComputer -Filter "OperatingSystem -eq 'Windows 10 Pro'" | ft
computadora publicitaria
Obtenga todas las computadoras basadas en el sistema operativo

También podemos usar múltiples condiciones, por ejemplo, para obtener todas las computadoras que se ejecutan en Windows 10 u 11:

Get-ADComputer -Filter "OperatingSystem -eq 'Windows 10 Pro' -or OperatingSystem -eq 'Windows 11 Pro'" | ft

Obtener computadoras inactivas

¿Quieres saber cuántos equipos inactivos tienes? Podemos filtrar las computadoras AD en la última fecha de inicio de sesión para extraer todas las computadoras que no se usaron durante los últimos 90 días, por ejemplo.

Para esto, primero necesitamos crear una variable de fecha, tomando la fecha de hoy y restándole 90 días. Luego podemos filtrar las computadoras AD en la última fecha de inicio de sesión:

$date = (Get-Date) - (New-TimeSpan -Days 90)
Get-ADcomputer -Filter 'lastLogondate -lt $date' | ft

# Select the canonicalName,lastlogondate and name for a more readable list
Get-ADcomputer -Filter 'lastLogondate -lt $date' -properties canonicalName,lastlogondate | select name,canonicalname,lastlogondate | ft -AutoSize

Obtenga todas las computadoras deshabilitadas

Otro ejemplo útil es obtener todas las computadoras deshabilitadas de la unidad organizativa:

# Get all disabled computers
Get-ADComputer -Filter "Enabled -eq 'False'" | ft

# Get only enabled computers
Get-ADComputer -Filter "Enabled -eq 'True'" | ft

Obtener propiedades de ADComputer

Como se mencionó anteriormente en el artículo, el objeto de la computadora no contiene muchas propiedades útiles (en comparación con un objeto de usuario). Pero todavía hay información útil que se puede extraer del objeto.

Sin especificar las propiedades, solo obtiene información relacionada con el nombre del equipo y el nombre distinguido. Pero otras propiedades que son útiles son por ejemplo:

  • BadLogonCount
  • BadPwdCount
  • Dirección IPv4
  • Activado
  • Último cierre de sesión
  • LastLogonDate
  • LogonCount
  • Sistema operativo
  • Versión del sistema operativo
  • Cuando se creó

Para obtener esta información podemos usar el parámetro -properties:

Get-ADComputer -identity la-computer-22 -Properties IPv4Address,LastLogonDate,OperatingSystem,OperatingSystemVersion,WhenCreated

Exportar computadora AD a CSV con PowerShell

La exportación de resultados en PowerShell a CSV es bastante común. Todos usamos PowerShell a menudo para recuperar información solo para procesarla más en Excel. He escrito una guía completa sobre el cmdlet Export-CSV, pero también quiero darle un par de ejemplos útiles cuando trabaje con el cmdlet Get-ADComputer.

Para exportar simplemente todos los objetos de la computadora AD, podemos usar el siguiente comando:

Get-ADComputer -filter * | Export-CSV c:\temp\computers.csv -NoTypeInformation

Pero como notará, esto no le dará realmente los resultados que está buscando. Incluirá todos los objetos de la computadora, habilitados y deshabilitados, y no realmente la información que necesitamos.

Seleccione las propiedades que necesitamos

Así que el primer paso es especificar los campos que realmente queremos exportar. Por ejemplo, si queremos exportar el nombre, canonicalname, sistema operativo y LastLogonDate, podríamos usar el siguiente comando:

Get-ADComputer -filter * -properties canonicalname,operatingsystem,LastLogonDate | select name,canonicalname,operatingsystem,LastLogonDate | Export-CSV c:\temp\computers.csv -NoTypeInformation

Exportar solo equipos habilitados

Si desea exportar solo equipos habilitados, puede agregar un filtro al cmdlet:

Get-ADComputer -filter "Enabled -eq 'true'" -properties canonicalname,operatingsystem,LastLogonDate | select name,canonicalname,operatingsystem,LastLogonDate | Export-CSV c:\temp\computers.csv -NoTypeInformation

Complete Exportar computadoras AD a CSV Script

Creé un script de PowerShell que exportará todas las computadoras AD a CSV con las propiedades que se necesitan con más frecuencia.

Cuando ejecuta el script, especifica un par de opciones:

  • Especificar la base de búsqueda (OU), Active Directory completo predeterminado
  • Obtenga computadoras habilitadas o deshabilitadas o ambas (solo habilitado por defecto)
  • Exportar archivo CSV de ruta (ubicación de la secuencia de comandos predeterminada)

El script obtendrá todas las cuentas de usuario del directorio activo si no especifica la base de búsqueda (OU). También es posible especificar varias unidades organizativas:

.\Get-ADComputers.ps1 -searchBase "OU=computers,OU=Amsterdam,DC=LazyAdmin,DC=Local","OU=computers,OU=Oslo,DC=LazyAdmin,DC=Local" -path c:\temp\computers.csv

Siga estos pasos para exportar las computadoras AD con el script de PowerShell:

  1. Descargar el script completo Export AD Computers de
  2. Abrir PowerShell y navegue hasta el script
  3. Ejecute el script de exportación: Get-ADComputers.ps1

Cuando se complete, la secuencia de comandos abrirá automáticamente Excel para usted.

param(
  [Parameter(
    Mandatory = $false,
    HelpMessage = "Enter the searchbase between quotes or multiple separated with a comma"
    )]
  [string[]]$searchBase,

  [Parameter(
    Mandatory = $false,
    HelpMessage = "Get computers that are enabled, disabled or both"
  )]
    [ValidateSet("true", "false", "both")]
  [string]$enabled = "true",

  [Parameter(
    Mandatory = $false,
    HelpMessage = "Enter path to save the CSV file"
  )]
  [string]$path = ".\ADcomputers-$((Get-Date -format "MMM-dd-yyyy").ToString()).csv"
)

Function Get-Computers {
    <#
    .SYNOPSIS
      Get computers from the requested DN
    #>
    param(
      [Parameter(
        Mandatory = $true
      )]
      $dn
    )
    process{
      # Set the properties to retrieve
      $properties = @(
        'Name',
        'CanonicalName',
        'OperatingSystem',
        'OperatingSystemVersion',
        'LastLogonDate',
        'LogonCount',
        'BadLogonCount',
        'IPv4Address',
        'Enabled',
        'whenCreated'
      )

      # Get enabled, disabled or both computers
      switch ($enabled)
      {
        "true" {$filter = "enabled -eq 'true'"}
        "false" {$filter = "enabled -eq 'false'"}
        "both" {$filter = ""}
      }

      # Get the computers
      Get-ADComputer -Filter $filter -searchBase $dn -Properties $properties | select $properties
    }
}


Function Get-AllADComputers {
  <#
    .SYNOPSIS
      Get all AD computers
  #>
  process {
    Write-Host "Collecting computers" -ForegroundColor Cyan
    $computers = @()

    # Collect computers
    if ($searchBase) {
      # Get the requested mailboxes
       foreach ($dn in $searchBase) {
         Write-Host "- Get computers in $dn" -ForegroundColor Cyan
         $computers += Get-Computers -dn $dn
       }
     }else{
       # Get distinguishedName of the domain
       $dn = Get-ADDomain | Select -ExpandProperty DistinguishedName
       Write-Host "- Get computers in $dn" -ForegroundColor Cyan
       $computers += Get-Computers -dn $dn
     }
 

    # Loop through all computers
    $computers | ForEach {

      [pscustomobject]@{
        "Name" = $_.Name
        "CanonicalName" = $_.CanonicalName
        "OS" = $_.OperatingSystem
        "OS Version" = $_.OperatingSystemVersion
        "Last Logon" = $_.lastLogonDate
        "Logon Count" = $_.logonCount
        "Bad Logon Count" = $_.BadLogonCount
        "IP Address" = $_.IPv4Address
        "Mobile" = $_.mobile
        "Enabled" = if ($_.Enabled) {"enabled"} else {"disabled"}
        "Date created" = $_.whenCreated
      }
    }
  }
}

Get-AllADComputers | Sort-Object Name | Export-CSV -Path $path -NoTypeInformation

if ((Get-Item $path).Length -gt 0) {
  Write-Host "Report finished and saved in $path" -ForegroundColor Green

  # Open the CSV file
  Invoke-Item $path

}else{
  Write-Host "Failed to create report" -ForegroundColor Red
}

Terminando

El cmdlet Get ADComputer es realmente útil cuando se trata de equipos exigentes fuera de Active Directory.

El uso del parámetro de la base de búsqueda le permite seleccionar rápidamente la computadora que necesita de la unidad organizativa especificada.

Para exportar las computadoras AD a CSV, puede probar el script. Puede cambiar fácilmente las propiedades que recupera según sus propias necesidades.

Si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

Buzón: cambie la configuración del buzón con PowerShell

Buzón: cambie la configuración del buzón con PowerShell

El cmdlet Set-Mailbox en PowerShell nos permite cambiar la configuración del buzón en Exchange Server y Exchange Online. Podemos usar ...
Leer Más
Cómo agregar o configurar MailboxFolderPermission con PowerShell

Cómo agregar o configurar MailboxFolderPermission con PowerShell

En Exchange Online podemos compartir buzones completos con otros usuarios. Pero, ¿qué sucede si desea compartir solo una carpeta? ¿O ...
Leer Más
Cómo instalar el módulo Microsoft Graph en PowerShell

Cómo instalar el módulo Microsoft Graph en PowerShell

La API de Microsoft Graph nos permite interactuar con todos los servicios de Microsoft a través de una única fuente ...
Leer Más
Explicación de Set-ADUser: cómo modificar usuarios de AD con PowerShell

Explicación de Set-ADUser: cómo modificar usuarios de AD con PowerShell

¿Necesita actualizar varios usuarios en su Active Directory? ¿O busca una forma más eficiente de modificar las propiedades de los ...
Leer Más
Cómo ejecutar un script de PowerShell

Cómo ejecutar un script de PowerShell

Los scripts de PowerShell son una excelente manera de automatizar tareas, recopilar información o modificar propiedades de forma masiva. La ...
Leer Más
Cómo instalar el módulo Azure AD en PowerShell

Cómo instalar el módulo Azure AD en PowerShell

Cuando desee utilizar PowerShell para interactuar con su entorno de Azure AD, deberá instalar el módulo de Azure AD. Este ...
Leer Más

Deja un comentario