Active-Directory

如何解決“最後一個令牌以’C’開頭”和“更改修改條目缺少終止符’-’”的LDIFDE錯誤..?

  • July 10, 2019

在嘗試將現有使用者與退出安全組配對(域遷移)時,如何解決“最後一個令牌以’C’開頭”和“更改修改條目缺少終止符’-’”的 LDIFDE 錯誤?

我執行這個:

C:\Users\Administrator\Downloads\ldif_files>ldifde -i -k -f test.ldf -v -j "C:\Users\Administrator\Downloads\ldif_files"
Connecting to "dc1.company.local"
Logging in as current user using SSPI
Importing directory from file "test.ldf"
Loading entries

There is a syntax error in the input file
Failed on line 6.  The last token starts with 'C'.
The change-modify entry is missing the terminator '-'.
0 entries modified successfully.
An error has occurred in the program

C:\Users\Administrator\Downloads\ldif_files>

test.ldf 是這樣的:

dn: CN=PrinterAdmins,OU=GL,OU=Groups,OU=CMPNY,DC=company,DC=local
changetype: modify
add: member
objectClass: top
objectClass: group
member: CN=John Doe,OU=Track-It!,OU=Admins,OU=CMPNY,DC=company,DC=local

我現在已經煞費苦心地解決了幾個或幾個小時,但沒有成功。我試過了…

  • 在末尾添加單個連結“-”
  • 在末尾添加一行“-”,後跟一個空行(總共兩行)
  • 其他幾件事;花了很多時間在Google上搜尋解決方案並嘗試一切都沒有成功

OU、安全組、使用者存在。對於我的生活,我無法弄清楚。我已成功從“oldcompany.com”域導入了一個 OU 結構,使用 Notepad++ 刪除特定的空格/輸入字元,並將“dc=oldcompany,dc=com”替換為“dc=company,dc=local”,導入使用者,導入了安全組——一切都成功了。剩下的就是將成員資格的一部分導入每個組(將使用者綁定到他們的組)。

請幫忙。:(

我在做什麼/試圖做什麼/已經做了什麼?我有大約 700 個組,需要將數百個使用者配對。導入OU結構,後接使用者,後接

$$ empty $$組是成功的。剩下的就是將使用者與他們的組配對。從舊的“company.com”域(從 2003 DC)轉移到全新的 2012 DC 上的“company.local”。想要避免手動添加使用者的所有 700 個組(因為我確實有一個 Excel 報告告訴我每個組的成員/每個使用者是哪個組的成員)。 編輯:解決方案!

這是我必須做的才能讓它工作:

  • 刪除所有 objectClass 行;下次我需要將其排除在導出的命令參數之外
  • 文件的第一行應該是空行,後跟第一組的“dn:”行
  • 文件的倒數第二行應該是 -,後跟一個空行(文件的最後一行)

因此,要將使用者、安全組和組成員從 company.com 導入到 company.local,我必須這樣做:

  1. 從 company.com 導出 OU 結構;在 company.com 上,當您使用包含所有內容(安全組、使用者、OU、GPO 等)

Active Directory 使用者和電腦時,我們在域的根目錄中有一個 OU“CMPNY”

  • 執行ldifde -f exportOUs .ldf -s srvADdc1 -t 3268 -d “OU=CMPNY,DC=company,DC=com” -p subtree -r “(objectCategory=organizationalUnit)” -l “cn,objectclass,ou” on任何連接到舊 company.com AD 域的機器;它將連接到srvADdc1(域控制器)以搜尋和導出
  1. 從 company.com 導出使用者
  • 執行difde -f exportUsers .ldf -s srvADdc1 -t 3268 -d “OU=CMPNY,DC=company,DC=com” -p subtree -r “(&(objectCategory=Person)(objectClass=user))” -l “cn,displayName,distinguishedName,name,objectCategory,objectClass,sAMAccountName”
  1. 從 company.com 導出沒有成員的組(例如空的安全組)
  • 執行ldifde -f exportGroupsEmpty .ldf -s srvADdc1 -t 3268 -d “OU=CMPNY,DC=company,DC=com” -p subtree -r “(&(objectCategory=group)(objectClass=group))” -l “cn,name,sAMAccountName,grouptype,objectclass”
  1. 從 company.com 導出組與成員(包含確定哪些使用者對像是哪個組的成員的最少資訊)
  • 執行ldifde -f exportGroupsMembers .ldf -s srvADdc1 -t 3268 -d “OU=CMPNY,DC=company,DC=com” -p subtree -r “(&(ObjectCategory=group)(objectClass=group)(name= ) (成員= ))” -l “成員”
  1. 將舊company.com的OU骨架導入新的company.local域;我們在 company.local 中使用了不同的 OU 骨架結構(根目錄下沒有“CMPNY”OU),所以我們導入的這個 OU 骨架只是為了導入舊數據,在我們導入所有內容之後,我們可以重命名/清理/刪除任何內容,然後將導入的對象移動和排列到我們決定在新的 company.local 域上使用的新/不同的 OU 骨架結構標準
  • 通過 Notepad++修改exportOUs.ldf(我個人偏好),找到DC=com並將所有替換為DC=local,並保存文件
  • 執行ldifde -i -k -f exportOUs .ldf -v -j “C:";您可以更改 -j 參數值的路徑,或完全刪除**-j “C:"** – 它所做的只是將任何錯誤記錄到文件中
  1. 將使用者從 company.com 導入到 company.local
  • 通過 Notepad++修改exportUsers.ldf ,找到****DC=com並全部替換為DC=local,保存文件
  • 執行ldifde -i -k -f exportUsers .ldf -v -j “C:"
  1. 導入空$$ Security $$將 company.com 中的 shell 分組到 company.local
  • 通過 Notepad++修改exportGroupsEmpty.ldf ,找到****DC=com並全部替換為DC=local,保存文件
  • 執行ldifde -i -k -f exportGroupsEmpty .ldf -v -j “C:"
  1. 將使用者和組之間的成員資格配對從 company.com 導入到 company.local
  • 通過 Notepad++

打開exportGroupsMembers.ldf + 非常仔細地檢查這個文件的內容;注意單個項目是如何分成多行的(例如,如果有人決定在一行中按 ENTER 鍵 1/3)——它們通常應該在一行而不是溢出到多行 + 首先是解決多行溢出問題。為此,請選擇兩行之間需要刪除以修復它的所有字元數據(僅針對該實例),然後將其“全部替換”為任何內容 + 找到 dc=com 並將所有替換為 dc=local + 將所有空行替換為兩行:第一行應為單 - 字元,第二行應為空行;您可以通過選擇該空間並在 Notepad++ 中使用擴展搜尋模式用 \r\n-\r\n\r\n 替換所有內容來完成此操作 + 確保文件的第一行是第一個“dn:”行(用於第一組)之前的空白空行(沒有空格,只有空行) + 確保文件的倒數第二行是 - 行,後跟一個空行(作為最後一行)

  • 找到 “changetype: add” 並將所有替換為changetype: modify\r\nadd: member(基本上,這會將 ‘add’ 更改為 ‘modify’,並在此 “add: member” 下方創建新行)
  • 執行ldifde -i -k -f exportGroupsMembers .ldf -v -j “C:"

範例 exportGroupsMembers.ldf (第一行有一個空格 - 它不應該有空格,只是應該是一個空行; - 行之後的最後一行也應該是一個空行):

dn: CN=ERP_User_Test,OU=GL,OU=Groups,OU=CMPNY,DC=company,DC=local
changetype: modify
add: member
member: CN=Ralph Doe,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
member: CN=Grace McPhillip,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
member: CN=Logan Rowley,OU=Track-It!,OU=Admins,OU=CMPNY,DC=company,DC=local
-

dn: CN=FolderSecurity_StockReportsDatabase_C,OU=GL,OU=Groups,OU=CMPNY,DC=company,DC=local
changetype: modify
add: member
member: CN=David Collins,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
member: CN=Kelly Paris,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
member: CN=genericSalesUser,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
-

dn: CN=FolderSecurity_StockReportsDatabase_R,OU=GL,OU=Groups,OU=CMPNY,DC=company,DC=local
changetype: modify
add: member
member: CN=Ron Burgandy,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
member: CN=Jane Doe,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
member: CN=Bill Gates,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
-

這主要完成的是,當我們將共享網路驅動器遷移到新網路時,會保留單個文件夾的安全權限。我們不必去重新創建所有組,將成員重新添加到組中,然後遍歷 1000 多個具有獨特安全權限的文件夾(愚蠢,我知道)。

畢竟,我們可以..

  • 進入並刪除所有永久過時的使用者對象(例如 genericITAdmin 和 genericITModerator 和 genericITTech 管理員、測試帳戶、隨機一次性帳戶等),但保留已停用的真實個人帳戶
  • 重命名安全組以標準化命名約定,然後開始清理安全組以合併、查找模式、刪除 unqiue 安全權限等
  • 將對象移到我們的新 OU 骨架結構中,並在我們完成對它的除草、操作、刪除、重命名舊內容之後從根目錄中刪除 CMPNY OU

我感謝以下主題的響應者:-$$ H $$ardForum -伺服器故障

我遵循整體導出和導入工作流程的主要資源

我在旅途中使用或影響我的其他有用資訊

這是您的文件的外觀。我剛剛在 Windows 8 上針對 LDS 進行了測試以確定。

dn: CN=PrinterAdmins,OU=GL,OU=Groups,OU=CMPNY,DC=company,DC=local
changetype: modify
add: member
member: CN=John Doe,OU=Track-It!,OU=Admins,OU=CMPNY,DC=company,DC=local
-

如果值中沒有特殊字元,那麼 ANSI 文件應該就可以了。

你有機會,但如果你沒有http://support.microsoft.com/kb/237677可能會有所幫助。

你的回答讓我更接近我最終找到的答案。我正在更新數千個組。這是我的最終答案……‘add:member’應該更改為’replace:modify’……其他一切都與上面相同^^^

dn: CN=FolderSecurity_StockReportsDatabase_R,OU=GL,OU=Groups,OU=CMPNY,DC=company,DC=local
changetype: modify
replace: member
member: CN=Ron Burgandy,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local

member: CN=Jane Doe,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
member: CN=Bill Gates,OU=Uncategorized,OU=Users,OU=CMPNY,DC=company,DC=local
-

引用自:https://serverfault.com/questions/460230