En este post  empezaremos a tratar  de explicar las consultasy modficiiones del Active Directorya traves de linea de comandos, de esta manera obtendriamos varias ventajas como  poder simplificar la administracion del mismo ademas de poder obtenerinformacion que no podriamos obtener del entorno grafico. Con este metodo hasta podriamos crear cientos de usuarios, con sus respectivos, permisos, contrasenas importandolas de un  Excel, realizar inventarios de las pcs en segundos, crear listas segun que sistema operativo tienen….entre muchisimas otras cosas…

.

Para comenzar un poquito de teoria

DSQUERY

Es una Consulta al AD mediante el uso de criterios de búsqueda . Cada uno de los comandos dsquery encuentra objetos de un tipo de objeto específico, con la excepción de dsquery *, que puede consultar cualquier tipo de objeto

Dsquery es una herramienta de línea de comandos que está integrado en Windows Server 2008. . Para utilizar dsquery, debe ejecutar el comando dsquery desde un símbolo del sistema con privilegios elevados. Para abrir un símbolo del sistema con privilegios elevados, haga clic en Inicio, haga clic en Símbolo del sistema y, a continuación, haga clic en Ejecutar como administrador.

.

REDIRECCION CON | (PIPE)
Puede redireccionarse el resultados de las  DSQUERY a por ejemplo DSMOD con el fin de modificar un objeto.

Veamos un ejemplo simple:

“‘C:\> dsquery computer -inactive 4″” Con este comando consultamos todas las pcs que estuvieron inactivas las ultimas 4 semanas

“‘C:\>dsmod computer * -disabled yes”” COn este comando reemplazando el * por el “”nombre” de una pc, podriamos desactivarla la computadora en cuestion.

Bueno ahora utilizaremos el | (pipe)

C:\> dsquery computer -inactive 4 | dsmod computer -disabled yes

Que estamos diciendo con este comando? Traeme todas las pcs que estuvieron inactivas en las ultimas semanas, el Pipe realiza la redireccion del ID de todas estas pcs al segundo comando que es dsmod (comando que sirve para modificar un atributo de obetos) y las deshabilita.

DSGET

Muestra las propiedades de un equipo en el directorio. Hay dos variaciones de esta orden. La primera variación se muestran las propiedades de varios equipos. La segunda variación muestra la información de la pertenencia a un solo equipo.

Ejemplo, poder ver la descripcion de todas las computadoas que comienzan con marketing de la ou ventas.

dsquery computer OU=ventas,DC=Argentina,DC=Com -name marketing* | dsget computer -desc

.

Bueno despues de la teoria seguimos con mas teoria 😦

Dsquery computer

Syntaxis
      DSQuery Computer [{StartNode | forestroot | domainroot}]
         [-o {dn | rdn | samid}]  [-scope {subtree | onelevel | base}]
            [-name Name] [-desc Description] [-samid SAMName] [-inactive NumberOfWeeks]
               [-stalepwd NumberOfDays] [-disabled]
                  [{-s Server | -d Domain}] [-u UserName] [-p {Password | *}]
                     [-q] [-r] [-gc] [-limit NumberOfObjects] [{-uc | -uco | -uci}]

Key
   StartNode | forestroot | domainroot  The node in the console tree where the search starts.
                                        forestroot = search using the global catalog. 

   -o           The format used to display the search results.
                dn = distinguished name.
                rdn = relative distinguished name.
                samid = Security Accounts Manager (SAM) account name.

   -scope       The scope of the search:
                subtree = subtree that is rooted at the start node in the console tree.
                onelevel = immediate children of the start node only.
                base = single object that the start node represents.
                If forestroot is the StartNode, then subtree is the only valid scope. 

   -name        Search for computer(s) whose name attribute(CN) matches Name.
                For example, "br*"

   -desc        Search for computer(s) whose description matches. For example, "dell*"

   -samid       Search for computer(s) whose SAM account names match SAMName

   -inactive    Search for computer(s) that have been inactive for N number of weeks

   -stalepwd    Search for computer(s) whose passwords have not changed for n number of days.

   -disabled    Search for computer(s) whose accounts are disabled.

   -s       Server to connect to (Default=the domain controller in the logon domain.)
   -d       Domain to connect to.

   -u       Username with which the user logs on to a remote server.
   -p       Password     (UserName or Domain\UserName or Username@domain.com)

   -q       Quiet, suppress all output
   -r       Recursive search (follow referrals)
   -gc      Use the AD global catalog during the search.
   -limit   The maximum number of objects to return, default=100.

   -uc      Unicode format
   -uco     Unicode format for output only
   -uci     Unicode format for input only

.

Bueno vayamos a la parte divertida

Ejemplos:

En contrar todas las pcs que comienzan con ventas, suponiendo que la tenemos nombradas por sector ventas01, ventas02…

C:\> dsquery computer -name ventas*

Encontras todas las computadoras de la ou(unidad organizativa) Mendoza.

.

C:\> dsquery computer ou=Mendoza,ou=Workstations,dc=argentina,dc=com

.

Encontrar pcs con 4 semanas de inactividad:

C:\> dsquery computer -inactive 4

.

Encontrar las pcs con 4 semanas de inactividad y deshabilitarlas:

C:\> dsquery computer -inactive 4 | dsmod computer -disabled yes

.

Estos comandos pueden sernos muy utiles para poder realizar inventarios, ahorrandonos muchisimo tiempo 🙂

.

dsquery computer -name * | dsget computer -samid

Que le esstmos pidiendo? Que nos traiga todas las pcs, no importa cual sea el nombre y que nos devuelva el samid (nombre en la sam, por ejemplo servidor1)

.

COmo podemos exportar esto a un Notepad, excel?

dsquery computer -name * | dsget computer -samid > c:\pclist.txt

Agregandoles “”> c:\*.txt” nos exporta el resultado a un archivo de texto. >)

.

Obtener un listado de las computadoras segun que sistema operativo tienen

dsquery * domainroot -filter “(&(objectCategory=computer)(operatingSystem=Windows Server*))” | dsget computer -samid

Donde dice windows server *, podemos cambiarlo por ”windows seven” o “”windows xp””

.

Bueno esto es todo por hoy, espero que les haya sido de utilidad,  se puede consutar casi cualquier cosa del AD, les dejo un enlace a microsoft para que sigan investigando:

http://technet.microsoft.com/en-us/library/cc754340%28WS.10%29.aspx