Czy komputer istnieje w domenie i gdzie się znajduje? (DSQUERY vs ADFIND)

Niedawno jeden z naszych czytelników zapytał mnie o najlepszą (najszybszą) metodę na wyszukiwanie komputerów w AD albo sprawdzanie, czy dany komputer istnieje w domenie. Osoba ta, podobnie jak ja, pracuje w firmie, która ma wiele wydziałów i czasem wyszukiwanie obiektów w konsoli Active Directory Users and Computers  trwa trochę za długo, dlatego wyszukiwanie takich informacji najlepiej jest wykonać w CMD.

Moja odpowiedź mogła być tylko jedna:  „Użyj DSQUERY z pakietu RSAT”. Abyście nie posądzili mnie o bycie fanboy’em wszystkiego, co pochodzi prosto z Microsoftu, podam też przykłady użycia narzędzia adfind.exe.

Wyszukiwanie komputerów za pomocą DSQUERY z pakietu RSAT

RSAT, czyli Remote Server Administration Tools udostępni na naszej maszynie sporo narzędzi działających w wierszu poleceń w Windows. DSQUERY nasi czytelnicy powinni znać z artykułów o kasowaniu nieaktywnych kont komputerów albo zbieraniu informacji o skrypcie logowania użytkowników.

RSAT dla Windows 7 | RSAT dla Windows 8


Aby sprawdzić, czy komputer istnieje w domenie użyjemy:

dsquery computer –name <nazwa komputera>

Jeśli nie istnieje, to CMD nic nam nie wyświetli. Jeśli istnieje, to zobaczymy jego lokalizację (to odpowiedź na drugie pytanie, czyli „Gdzie się znajduje?”):

Pójdźmy o krok dalej i znajdźmy komputery należące do IT (przyjmijmy, że te będą miały fraze „it” w nazwie):

dsquery computer –name *it*

Wyszukiwanie  komputerów z danej lokalizacji (OU):

dsquery computer -name * ou=komputery,ou=Warszawa,ou=Europa,dc=spece,dc=it

Wyszukowanie po opisie:

dsquery computer -desc *szkoleniowy*



Wyszukiwanie komputerów za pomocą ADFIND .EXE

Narzędzie to ściągniemy za darmo z tej ze strony:

http://www.joeware.net/freetools/tools/adfind/



ADFIND to narzędzie o ogromnych możliwościach i na pewno będziemy z niego korzystali jeszcze nie raz :).  Podobnie jak DSQUERY działa w wierszu poleceń w Windows.

Polecenie, które znajdzie nam komputer o podanej nazwie:

adfind -s subtree -f „(&(objectcategory=computer)(name=nazwa_komputera))”

Aby znaleźć fragment nazwy możemy podobnie jak w DSQUERY użyć  gwiazdki:

adfind -s subtree -f „(&(objectcategory=computer)(name=*it*))”

Aby znaleźć wszystkie komputery w domenie:

adfind -s subtree -f „(&(objectcategory=computer)”

I teraz najlepsze: DSQUERY pokazywał nam tylko ścieżkę znalezionego obiektu.  ADFIND idzie o kilka kroków dalej i dla każdego znalezionego komputera wyświetli szereg informacji:

dn:CN=komputer_dzialu_it,OU=komputery, OU=warszawa,DC=spece,DC=it,
DC=ORG
>objectClass: top
>objectClass: person
>objectClass: organizationalPerson
>objectClass: user
>objectClass: computer
>cn: komputer_dzialu_it
>distinguishedName: CN= komputer_dzialu_it,OU=komputery,OU=warszawa,DC=spece,DC=it
>instanceType: 4
>whenCreated: 20120323124507.0Z
>whenChanged: 20130616210643.0Z
>displayName: komputer_dzialu_it$
>uSNCreated: 147445033
>uSNChanged: 298593838
>name: komputer_dzialu_it
>objectGUID: {9E36A835-CF20-449D-9C48-111666762321}
>userAccountControl: 4096
>codePage: 0
>countryCode: 0
>localPolicyFlags: 0
>pwdLastSet: 130143169249974245
>primaryGroupID: 515
>objectSid: S-1-5-21-506676679-1112323469-1539812352-8463411
>accountExpires: 9223372036854775807
>sAMAccountName: komputer_dzialu_it $
>sAMAccountType: 805306369
>netbootMachineFilePath: \Boot\x86\pxeboot.com
>operatingSystem: Windows XP Professional
>operatingSystemVersion: 5.1 (2600)
>operatingSystemServicePack: Service Pack 3
>dNSHostName: komputer_dzialu_it.spece.it
>servicePrincipalName: HOST/ komputer_dzialu_it
>servicePrincipalName: HOST/ komputer_dzialu_it.spece.it
>objectCategory: CN= komputer_dzialu_it,OU=komputery,OU=warszawa,DC=spece,DC=it
>isCriticalSystemObject: FALSE
>dSCorePropagationData: 20121106193100.0Z
>dSCorePropagationData: 20120822123423.0Z
>dSCorePropagationData: 20120724170147.0Z
>dSCorePropagationData: 20120621183411.0Z
>dSCorePropagationData: 16010714223649.0Z
>lastLogonTimestamp: 130158895254561639

Tym artykułem zaledwie dotknąłem tematu zarządzania obiektami w domenie i z całą pewnością będziemy do tego wracali. Zachęcam do odwiedzania naszego Bloga.

Łukasz Skalikow

Obecnie Manager IT. Przez lata byłem Inżynierem systemów. Jestem entuzjastą i specem od vSphere, Windows serwer, GPO. Od zawsze byłem zwolennikiem wiersza poleceń i automatyzacji. Obecnie, ze względu na pracę, rodzinę i wyjazdy służbowe, dużo mniej udzielam się na blogu, ale mam nadzieję, że pośród kilkuset porad opublikowanych na spece.it, wiele osób znajdzie dla siebie coś przydatnego :)

Przeczytaj także...

5 komentarzy

  1. m4ko pisze:

    Dlaczego nie działa mi to polecenie dsquery, pomimo tego że zainstalowałem i skonfigurowałem RSAT? W linii polecenie pokazuje mi, że nie ma tego polecenia.

    • Zakładam, że poprawnie wybrałeś system (7,8) i wersję (32bit, 64bit) i instalacja nie zakończyła się błędem.

      Spróbuj wyszukać na dysku plik dsquery.exe. W jakiej jest lokalizacji?

  2. m4ko pisze:

    System do instalacja wybrałem na pewno poprawnie i sama instalacja przebiegła bez żadnych problemów. Dodatkowo po zainstalowaniu skonfigurowałem to narzędzie i tyle… Co do lokalizacji dsquery to znalazło mi następującą: C:\Windows\winsxs\x86_microsoft-windows-d..s-commandline-tools_31bf3856ad364e35_6.1.7601.17514_none_c9d66a25d06e796f\dsquery.exe

    • M4ko, nie wiem o jakiej „konfiguracji” mówisz. Co to znaczy, że „skonfigurowałeś” narzędzie? Instalacja jest banalnie prosta i wygląda podobnie jak instalacja poprawek. Nie wymaga restartu. Po zakończeniu polecenie „dsquery” musi być rozpoznawane przez system.

  3. Wykonaj jeszcze polecenie sfc /scannow w wierszu poleceń z prawami administratora.

Dodaj komentarz