LDAP 查詢基礎

作者: William Taylor

本文將探討輕量型目錄存取通訊協定 (LDAP) 查詢,這在疑難排解 Microsoft® Exchange Server 及其與其目錄的關係時可能很實用,但容易令人混淆。文中將提供關於 LDAP 查詢的基本資訊。

  • 基本 LDAP 語法

  • 可將 LDAP 查詢用在哪裡?

    • 使用 Active Directory 使用者和電腦進行搜尋

    • 使用 LDP 進行搜尋

    • 使用 LDIFDE 進行搜尋

  • 在 ADModify 中使用 LDAP 查詢

  • 其他詳細資訊

基本 LDAP 語法

  • = (等於)

    此一 LDAP 引數是指特定屬性必須等於 True 的特定值。比方說,假如您想要尋找名字為 John 的所有物件,您可使用:

    (givenName=John)

    這會傳回所有名字為 John 的物件。包括括弧是要強調 LDAP 陳述式的開始和結束。

  • & (邏輯 AND)

    當您有一個以上的條件,或希望序列中的所有條件皆為 True 時可使用此語法。比方說,假如您想要尋找所有名字為 John 且住在達拉斯的人,您可使用:

    (&(givenName=John)(l=Dallas))

    請注意每個引數都位於自己的一組括弧內。整個 LDAP 陳述式必須封裝在主要的括弧組中。& 運算子代表每個引數對於此篩選器必須為 True,以套用到剛剛提到的物件。

  • ! (邏輯 NOT)

    此運算子是用來排除具有特定屬性的物件。假設您需要尋找除名字為 John 外的所有物件,則可使用下列陳述式:

    (!givenName=John)

    此陳述式會尋找所有名字不是 John 的物件。附帶一提,! 運算子是直接放在引數的前面,和引數括弧組的裡面。因為此陳述式中只有一個引數,所以用括弧括住以方便說明。

  • * (萬用字元)

    您使用萬用字元來代表可能等於任何東西的值。會用到萬用字元的其中一種情況是,您想要尋找標題具有值的所有物件。這種情況下,您可使用:

    (title=*)

    這會傳回所有標題屬性有填入值的物件。另外一個例子可能是您知道某物件的名字以 Jo 開頭。那麼,您就可以使用下面語法來尋找這些物件:

    (givenName=Jo*)

    這會套用到所有名字以 Jo 為開頭的物件。

  • 下面是 LDAP 語法比較進階的範例:

    • 您需要一個篩選器來尋找所有位在達拉斯或奧斯丁,而且名字為 John 的物件。這將會是:

      (&(givenName=John)(|(l=Dallas)(l=Austin)))
    • 您在應用程式記錄中收到 9,548 個事件,而您需要找出所有導致此記錄事件的物件。在這種情況下,您需要尋找 msExchMasterAccountSID 中沒有值的所有停用使用者 (msExchUserAccountControl=2)。這將會是:

      (&(msExchUserAccountControl=2)(!msExchMasterAccountSID=*))

    Dd159860.note(zh-tw,TechNet.10).gif附註:

    將 ! 運算子與萬用字元運算子搭配使用可尋找屬性沒有設為任何內容的物件。

可將 LDAP 查詢用在哪裡?

當使用 Exchange Server 時,您會遇到要使用 LDAP 字串的情況。舉個例來說,每當您設定收件者或信箱管理員原則,或是地址清單篩選器,或是當您搜尋 Active Directory® 目錄服務時,Exchange Server 都會利用 LDAP。在下一節中,會討論一些方法您可以使用 LDAP 陳述式的方法。

使用 Active Directory 使用者和電腦進行搜尋

下例解釋了如何使用 Active Directory 使用者和電腦來搜尋:

  1. 開啟 [Active Directory 使用者和電腦]。

  2. 在網域物件上按右鍵,並選取 [尋找]。

    Dd159860.2f779541-ae57-4be9-a2d4-10378092e603(zh-tw,TechNet.10).gif

  3. 按一下 [尋找] 旁邊的下拉清單,然後選取 [自訂搜尋]。

  4. 從下個畫面選取 [進階] 索引標籤。

  5. 在 [輸入 LDAP 查詢] 下鍵入適當的 LDAP 陳述式。

    Dd159860.42d946fc-6827-43ae-b85e-0bb8be4b051e(zh-tw,TechNet.10).gif

此範例嘗試尋找標題有 prez 或名字以 test 開頭的所有物件。假如您按一下 [立即尋找],應該會看到適當的輸出,如下一螢幕擷取畫面所示。

Dd159860.9e9364e5-54b9-479e-92fd-40bbfb1502df(zh-tw,TechNet.10).gif

使用 LDP 進行搜尋

您也可以使用 LDP 搜尋,這包含在 Microsoft Windows Server™ 2003 和 Windows® 2000 Server 支援工具中。此工具不但可讓您搜尋網域控制站,還能搜尋 [設定] 容器。您首先會開啟 LDP,然後連線到一個有效的網域控制站。接著您需要使用適當的憑證繫結。選取 [檢視],然後選取 [樹狀目錄]。將 [基本 DN] 欄位留白,再按一下 [確定]。導覽至您要搜尋的容器,並在容器上按右鍵,再選取 [搜尋]。

Dd159860.e7c4bdd5-5c25-4cdd-9c56-989193446aba(zh-tw,TechNet.10).gif

接著會出現一個對話方塊,當中的 [基本 DN] 欄位應該會有正確的值。鍵入您想要作為篩選依據的 LDAP 陳述式,接著應該會出現如下的畫面。

Dd159860.829e620d-dc18-4103-a6be-e1f64e5cbd9b(zh-tw,TechNet.10).gif

如果您想要搜尋目前所在層級之下的所有容器,請確定選取 [子樹狀目錄] 的選項按鈕。按一下 [執行],它應該會找到所有相符的項目。

Dd159860.a29ac81e-4dd6-434e-9344-e8a92a56e927(zh-tw,TechNet.10).gif

使用 LDIFDE 進行搜尋

有時候您可能會需要對一組符合特定條件的物件進行搜尋,並且想要針對該些使用者建立一份清單。LDIFDE 是一種可讓您用來建立該份清單的命令列工具。假設您想要尋找其 mailNickName 以 Jeff 為開頭的所有使用者,並儲存其清單。您就可以執行下列命令。

C:\>ldifde -d "DC=witaylorroot,DC=com" -f c:\output.txt -r "(&(objectClass=user)(mailNickName=jeff*))

在此例中,您會找到三個物件,並將它們所有的屬性匯出到您所指定的輸出 .txt 檔案。不過要是您要輸出上千名使用者的結果,那麼輸出檔可能會過大。有另外一個選項您可以用,那就是 –l (小寫的 L) 參數來指定要會出哪些屬性。識別名稱會自動匯出,但要是您其他項目都不要的話,可以加入 –l nothing 到字串中,這樣可以加速輸出。下面的命令為此種範例之一。

C:\>ldifde -d "DC=witaylorroot,DC=com" -f c:\output.txt -l nothing -r 
"(&(objectClass=user)(mailNickName=jeff*))

在此例中假設您想要使用稍早參考的 LDIFDE 匯出,可是只想要在輸出中包括 homeMDB,那就必須使用下列命令:

C:\>ldifde -d "DC=witaylorroot,DC=com" -f c:\output.txt -l "homeMDB" -r
"(&(objectClass=user)(mailNickName=jeff*))
dn: CN=jeff,OU=55Users,DC=witaylorroot,DC=com changetype: add homeMDB: CN=Private Information Store 
(WITAYLORNT4EX55),CN=First Storage
Group,CN=InformationStore,CN=WITAYLORNT4EX55,CN=Servers,CN=WITAYLORMIXEDSITE,CN=Administrative
Groups,CN=WITAYLORORG,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=witaylorroot,DC=com
dn: CN=jeff2,CN=Users,DC=witaylorroot,DC=com changetype: add homeMDB: CN=Private Information Store 
(WITAYLORNT4EX55),CN=First Storage
Group,CN=InformationStore,CN=WITAYLORNT4EX55,CN=Servers,CN=WITAYLORMIXEDSITE,CN=Administrative
Groups,CN=WITAYLORORG,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=witaylorroot,DC=com
dn: CN=jeff3,CN=Users,DC=witaylorroot,DC=com changetype: add homeMDB: CN=Private Information Store 
(WITAYLORNT4EX55),CN=First Storage
Group,CN=InformationStore,CN=WITAYLORNT4EX55,CN=Servers,CN=WITAYLORMIXEDSITE,CN=Administrative
Groups,CN=WITAYLORORG,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=witaylorroot,DC=com

假如您所進行的匯出並沒有限制要匯出什麼屬性,您可能會想要使用 –n 參數來隱藏通常會包括的任何值。這有助於避免匯出檔案的大小變得太大。

在 ADModify 中使用 LDAP 查詢

若要取得 ADModify 工具,請洽 Microsoft 產品支援服務。如需如何連絡 Microsoft 產品支援服務的詳細資訊,請參閱 Microsoft 說明及支援網站

若要從協力廠商網站取得 ADModify 工具,請參訪下列 GotDotNet 網站:ADModify.NET:Workspace Home (英文)。

ADModify 是 Microsoft 產品支援服務日常所使用的一項工具。在大型的 Active Directory 環境中,要將當中可能有上千名使用者的整個組織單位 (OU) 加入右邊的清單中,然後逐一剖析以找出您需要變更的使用者,並不是那麼容易。不過倒是有個替代方法,在第一個畫面上,選取 [修改現有使用者屬性],然後按一下 [下一步]。在 [修改 Active Directory 使用者] 畫面上,有個 [進階] 按鈕。

Dd159860.ea1873c7-1788-4944-b98d-5c58ba92f20a(zh-tw,TechNet.10).gif

假如您按下 [進階] 按鈕,就會出現 [自訂 LDAP 篩選器] 對話方塊。在此對話方塊中,鍵入您想要使用的 LDAP 篩選器。在本例中,您只想列出啟用郵件的群組,所以看起來像下面這樣。

Dd159860.677989cc-e781-469a-86bf-d1a05135f7da(zh-tw,TechNet.10).gif

接下來,按一下 [確定]。選取您要 ADModify 搜尋的 OU 或網域。若您想要查詢選定的容器內更下層的容器,請確定選取 [列舉使用者時周遊子容器]。按一下 [加入清單],然後在收到會花多久時間的警告時按 [是]。符合您所指定的條件的物件現在應該會出現在右窗格中。

Dd159860.4a9d4478-2af1-4083-9c5f-000d53784034(zh-tw,TechNet.10).gif

從這裡反白您要修改的物件,然後繼續精靈。

其他詳細資訊

如需詳細資訊,請參閱下列微軟知識庫文件: