2014年1月14日 星期二

AD(Active Directory)的目錄服務中的匯出csv 檔案筆記

上禮拜在公司收到某機關需要設立信件群組,而該機關的人數有5百多人,1筆1筆加帳號可能會加到天亮又天黑,所幸剛好也是我管的Mail Server (Mail2000) 可以透過匯入文字檔的方式將人加入群組,那問題又來了,在Mail Server的後台中,沒有組織的概念,幾萬個帳號的組織結構是完全打平的,那要怎麼辦呢...?
又很巧的是我目前也有在協助辦理公司的目錄服務(以下簡稱AD),之前無聊在玩的時候有把某些帳號匯出文字檔過,於是就想說來試試看吧!

以下是公司AD的環境跟需求:
環境:Windows Server 2012
需求:匯出某機關所有的帳號及姓名
格式:文字檔

匯出文字檔的指令是 csvde,try了很久之後,終於讓我試出來了,指令如下:
csvde -u -l "要撈的屬性,用逗號分隔所需屬性,預設也會撈出DN值 " -f C:\export_0114.csv -d "ou=aa_department, dc=sales, dc=microsoft, dc=com" -r objectclass=user

至於參數的打法就是看csvde的說明(請參考註解)慢慢打出來的,真有趣。

註解:
CSV 目錄交換 
一般參數
========
-i              開啟匯入模式 (預設值為匯出)
-f filename     輸入或輸出檔案名稱
-s servername   要繫結的伺服器 (預設值為電腦網域的 DC)
-v              開啟詳細資訊模式
-c FromDN ToDN   FromDN 取代為 ToDN
-j path         記錄檔位置
-t port         連接埠號碼 (預設值 = 389)
-u              使用 Unicode 格式
-h              啟用 SASL 層簽署與加密
-?              說明
僅適用於匯出
============
-d RootDN       LDAP 搜尋的根目錄 (預設值為命名內容)
-r Filter       LDAP 搜尋篩選 (預設值為 "(objectClass=*)")
-p SearchScope  搜尋領域 (Base/OneLevel/Subtree)
-l list         LDAP 搜尋所要尋找的屬性清單 (逗點分隔)
-o list         輸入所要省略的屬性清單 (逗點分隔)
-g              停用頁數搜尋。
-m              匯出時,啟用 SAM 邏輯。
-n              不匯出二進位值 
匯入
====
-k              匯入將繼續並忽略「限制違規」和「物件已存在」的錯誤 
認證建立
========
注意如果沒有指定任何的認證,CSVDE 將會使用 SSPI 來繫結做為目前登入
的使用者。 
-a UserDN [Password | *]              簡單驗證
-b UserName Domain [Password | *]     SSPI 繫結方法

範例目前網域的簡單匯入
    csvde -i -f INPUT.CSV

範例目前網域的簡單匯出
    csvde -f OUTPUT.CSV

範例指定網域的匯出(包含認證)
    csvde -m -f OUTPUT.CSV
          -b USERNAME DOMAINNAME *
          -s SERVERNAME
          -d "cn=users,DC=DOMAINNAME,DC=Microsoft,DC=Com"
          -r "(objectClass=user)"

沒有留言: