星期四, 2月 04, 2021

使用「dsquery Command」來查詢及匯出 AD使用者帳號

dsquery command 教學

AD上可以查詢使用者帳號,但要匯出使用者帳號似乎不是那麼方便,

本篇記錄一下最近使用「dsquery Command」去查詢及匯出 AD使用者的操作步驟。

▼dsquery 的使用條件是?

要使用 「dsquery command」一般在 AD環境內可以直接使用,若是成員伺服器則需先安裝 AD DS管理工具。

▼如何使用 dsquery help?

我們可以開啟「命令提式字元」使用 dsquery /? 來查詢使用方法。

接著你可以再根據以下要搜尋的條件再去下 help:

dsquery computer - 尋找目錄中的電腦。
dsquery contact - 尋找目錄中的連絡人。
dsquery subnet - 尋找目錄中的子網路。
dsquery group - 尋找目錄中的群組。
dsquery ou - 尋找目錄中的組織單位。
dsquery site - 尋找目錄中的站台。
dsquery server - 尋找目錄中的 AD DCs/LDS 執行個體。
dsquery user - 尋找目錄中的使用者。
dsquery quota - 尋找目錄中的配額規格。
dsquery partition - 尋找目錄中的分割。
dsquery * - 使用一般 LDAP 查詢,尋找目錄中的任何物件。

例如:若要查詢「目錄中的使用者」則可以 dsquery user /? 來查詢使用方法。

下面列出 「dsquery user」 常用的幾個參數:

{<StartNode> | forestroot | domainroot}

👉 搜尋的起始節點: 樹系根目錄、網域根目錄或 DN為 <StartNode> 的節點。可以是"forestroot"、"domainroot" 或物件 DN。如果指定 "forestroot",則會透過通用類別目錄進行搜尋。預設值: domainroot。

-o {dn | rdn | upn | samid}

👉 指定輸出格式。預設值: 辨別名稱 (DN)。

-name <Name>

👉 尋找名稱符合 <Name> 篩選器指定的使用者(如  "jon*" 或 "*ith" 或 "j*th")。

-desc <Description>

👉 尋找描述符合 <Description> 篩選器指定的使用者 (如 "jon*"、"*ith" 或"j*th")。

-upn <UPN>

👉 尋找 UPN 符合 <UPN> 篩選器指定的使用者。

-inactive <NumWeeks>

👉 尋找至少 <NumWeeks> 週未作用 (未登入) 的使用者。

-disabled

👉 尋找其帳戶已停用的使用者。

-limit <NumObjects>

👉 指定要傳回與指定準則相符的物件數目,其中<NumObjects> 是要傳回的物件數目。如果<NumObjects> 的值是 0,則會傳回所有相符的物件。如果未指定這個參數,則預設會顯示前100 個結果集。

{-uc | -uco | -uci}

👉-uc 指定管道的輸入或輸出格式都是 Unicode。
-uco 指定管道或檔案的輸出格式是 Unicode。
-uci 指定管道或檔案的輸入格式是 Unicode。

▼微軟範例參考 (你也可以下 help去看)

尋找指定組織單位 (OU) 中名稱開頭為 "jon" 且其帳戶已停用登入功能的所有使用者,同時顯示其使用者主要名稱 (UPN):

dsquery user ou=Test,dc=microsoft,dc=com -o upn -name jon* -disabled

尋找僅位於目前網域中、名稱結尾為 "smith" 且 3 週未作用的所有使用者,同時顯示其 DN:

dsquery user domainroot -name *smith -inactive 3

尋找組織單位中指定為 ou=sales,dc=microsoft,dc=com 的所有使用者,同時顯示其 UPN:

dsquery user ou=sales,dc=microsoft,dc=com -o upn

▼實作範例

範例一、當組織單位(HQ)下還有組織單位(Sales)時,並想匯出至 txt檔怎麼下?

尋找組織單位中指定為 ou=sales,ou=hq,dc=itorz324,dc=com,dc=tw 的所有使用者,同時顯示其 UPN:並輸出至 c:\temp\sales-user-list.txt

dsquery user ou=sales,ou=hq,dc=itorz324,dc=com,dc=tw -o upn >c:\temp\sales-user-list.txt

你會發現輸出後下方出現訊息:

「Dsquery 已經達到預設的 100 個結果的顯示上限; 要顯示更多結果的話,請使用 -limit 選項。」 

通常超過100筆我們會添加參數 👉 limit 0

dsquery user ou=sales,ou=hq,dc=itorz324,dc=com,dc=tw -o upn -limit 0 >c:\temp\sales-user-list.txt

範例二、想匯出 domain下所有 user和相關欄位屬性至 txt檔

dsquery * domainroot -filter "(&(objectClass=person)(objectClass=user)(!objectClass=computer)(cn=*))" -attr cn description mail -uco -limit 0 >c:\temp\domain-user.txt 

範例三、想匯出 ou=sales下所有 user和相關欄位屬性至 txt檔

dsquery * ou=sales,dc=itorz324,dc=com,dc=tw -filter "(&(objectClass=person)(objectClass=user)(!objectClass=computer)(cn=*))" -attr cn description mail -uco -limit 0 >c:\temp2\DomainUser-list.txt

dsquery command

▼語法說明:

dsquery * ou=sales,dc=itorz324,dc=com,dc=tw
要查詢網域為 itorz324.com.tw;ou為sales的所有資訊

-filter "(&(objectClass=person)(objectClass=user)(!objectClass=computer)(cn=*))"
過濾所查詢的資料,物件類別必須是個人使用者帳號,且排除電腦帳號,欄位cn為全部。

-attr cn description mail
要顯示出來的欄位有 cn、description、mail

-uco
資料要導出到pipe 或匯到檔案中

-limit 0
不限制資料的數量 ,傳回所有筆數

▼若要得知匯出的欄位屬性可至 AD查詢:

檢視 > 進階功能

enable-ad-attr

點選 >屬性編輯器

▼常用欄位屬性


▼參考網站來源

👉 IT 小僧

👉 微軟文件

👉 查欄位名稱

👉 Willis部落格

▼你或許也感興趣

👉 教你使用forfiles 尋找及刪除過期的檔案。

👉 Windows Command 教學 ~"echo" 指令如何使用?

👉 GPO 群組原則應用 | 解決 Windows 刪除檔案不提示問題。

👉 使用fsck Command 修復快掛掉 CentOS 檔案系統。

~若您覺得本篇有幫助到你,歡迎您訂閱分享出去~

沒有留言:

張貼留言