作者 主題: [分享]NT 4.0 PDC 帳號用 VB 匯出  (閱讀 9559 次)

0 會員 與 1 訪客 正在閱讀本文。

TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
[分享]NT 4.0 PDC 帳號用 VB 匯出
« 於: 2006-02-01 08:27 »
Copyright by TyroneYeh on Study-area
目地: 要把帳號匯入到 2003 Server (只有帳號沒有匯密碼哦)
環境: 一台老舊的 NT 4.0, 一台新安裝的 2003 Server, 分別為兩個不同的網域
說明: NT 4.0 PDC 升級成 2003 Server Active Directory(AD) 有幾種方式:
1. 用原來的 NT 4.0 安裝升級到 2003
2. 安裝一台新的 NT 4.0 做 BDC 複製好之後安裝升級到 2003
3. 用我要說的, 兩台個別為不同網域, 將 NT 4.0 的帳號都匯出成文字檔(ldif 格式), 再用 ldifde 工具匯入到 2003 Server 中


前題: 安裝好一台新的 2003 Server 及架好 Active Directory (AD), 還要有一台電腦有安裝 Visual Basic 6.0 or .NET (我是用 VB6 囉, .net 就不講啦) & Active Directory Service Interfaces (ADSI) 用來讀取 NT 4.0 PDC 上的帳號資訊

ps. 應該大部份的都是 AD 了吧... 我就當寫個備忘錄吧!!

首先找另一台電腦是有安裝 VB6 & ASDI 的電腦, 登入帳號是有 Administrator 權限的 (我的是, 不是不知道可不可以)

ASDI 下載網址: http://www.microsoft.com/ntserver/nts/downloads/other/ADSI25/default.asp

現在要做的就是讀取 NT 4.0 上的所有帳號資訊, 在有 VB6 的電腦上開啟 VB6 新增一個專案是標準執行檔
1. 在工具列中的專案->設定引用項目
2. 加勾選 Active DS Type Library
3. 加勾選 Microsoft Scripting Runtime
4. 確定
5. 在程式碼中貼上以下程式碼:

代碼: [選擇]

Dim sDomain
Dim sNewDomain
Dim sDn
Dim oADobject
Dim w As TextStream
Dim wc As TextStream
Dim fs As New FileSystemObject

Private Sub Form_Load()
    On Error GoTo  ERRGOTOTHE
    '-------------- 修改
    sDomain = "DomainName"                    ' 改成 NT 的 Domain
    sNewDomain = "ad.study-area.org"       ' 改成 2003 AD 的 Domain
    sDn = "DC=ad,DC=study-area,DC=org" '應該知道怎麼改這個吧
    '-------------- 以下不變 ------------------
    If fs.FileExists(App.Path & "\userlist.txt") Then
        fs.DeleteFile (App.Path & "\userlist.txt")
    End If
    Set w = fs.CreateTextFile(App.Path & "\userlist.txt", False, True)
   
    If fs.FileExists(App.Path & "\userlist.csv") Then
        fs.DeleteFile (App.Path & "\userlist.csv")
    End If
    Set wc = fs.CreateTextFile(App.Path & "\userlist.csv", False, True)
   
    Set oDomain = GetObject("WinNT://" & sDomain)
    oDomain.Filter = Array("User")
    For Each oADobject In oDomain
   
        If oADobject.AccountDisabled = False And oADobject.Name <> "Administrator" Then
       
            Debug.Print "oADobject.name:" & oADobject.Name & vbCrLf & _
                "oADobject.FullName:" & oADobject.FullName & vbCrLf & _
                "oADobject.Description:" & oADobject.Description & vbCrLf & _
                "oADobject.HomeDirDrive:" & oADobject.HomeDirDrive & vbCrLf & _
                "oADobject.HomeDirectory:" & oADobject.HomeDirectory & vbCrLf
       
       
            wc.WriteLine oADobject.Name & vbTab & oADobject.FullName & vbTab & oADobject.Description & _
                vbTab & oADobject.HomeDirDrive & vbTab & oADobject.HomeDirectory

            w.WriteLine "dn: CN=" & LCase(oADobject.Name) & ",CN=Users," & sDn
            w.WriteLine "changetype: Add"
            w.WriteLine "CN: " & LCase(oADobject.Name)
            If oADobject.FullName <> "" Then w.WriteLine "displayName: " & oADobject.FullName
            If oADobject.Description <> "" Then w.WriteLine "description: " & oADobject.Description
            w.WriteLine "objectClass: User"
            w.WriteLine "sAMAccountName: " & LCase(oADobject.Name)
            w.WriteLine "userPrincipalName: " & LCase(oADobject.Name) & "@" & sNewDomain
            w.WriteLine ""

        End If
   
    Next
   
    wc.Close
    w.Close
   
    MsgBox "OK"
    End

ERRGOTOTHE:
    MsgBox "ERROR"
    End
End Sub


6. 存檔
7. 按 F5 執行
(在剛剛的路徑下會有 userlist.txt 與 userlist.csv, csv 沒用到, 但可以當清單來用)
8. 將 userlist.txt 複製到 2003 Server 中
9. 在 2003 命令提示字元下匯入的指令: ldifde -i -f userlist.txt -j . -v -y -u -k

這樣子就在 2003 建好了原來 NT 4.0 所有的帳號囉

不過所有的帳號預設是停用的, 再去將停用的勾勾勾掉就可以啦
另外密碼就在第一次登入時(密碼空白)會請使用者重新設定密碼

缺點是: Client 要改一下網域才行
優點是: 不影響原來的 NT 4.0 網域

最後... 等到測試 ok 後就可以把 NT 4.0 關機啦
--
TyroneYeh

小徒兒

  • 鑽研的研究生
  • *****
  • 文章數: 622
    • 檢視個人資料
原來vb 6也可以玩 AD??
« 回覆 #1 於: 2007-01-04 09:44 »
原來vb 6也可以玩 AD??
請問vb 6可以拿來玩 server 2003的 AD嗎??

kevin_boy

  • 憂鬱的高中生
  • ***
  • 文章數: 185
    • 檢視個人資料
Re: [分享]NT 4.0 PDC 帳號用 VB 匯出
« 回覆 #2 於: 2007-07-24 11:06 »
引述: "TyroneYeh"
Copyright by TyroneYeh on Study-area
目地: 要把帳號匯入到 2003 Server (只有帳號沒有匯密碼哦)
環境: 一台老舊的 NT 4.0, 一台新安裝的 2003 Server, 分別為兩個不同的網域
說明: NT 4.0 PDC 升級成 2003 Server Active Directory(AD) 有幾種方式:
1. 用原來的 NT 4.0 安裝升級到 2003
2. 安裝一台新的 NT 4.0 做 BDC 複製好之後安裝升級到 2003
3. 用我要說的, 兩台個別為不同網域, 將 NT 4.0 的帳號都匯出成文字檔(ldif 格式), 再用 ldifde 工具匯入到 2003 Server 中


前題: 安裝好一台新的 2003 Server 及架好 Active Directory (AD), 還要有一台電腦有安裝 Visual Basic 6.0 or .NET (我是用 VB6 囉, .net 就不講啦) & Active Directory Service Interfaces (ADSI) 用來讀取 NT 4.0 PDC 上的帳號資訊

ps. 應該大部份的都是 AD 了吧... 我就當寫個備忘錄吧!!

首先找另一台電腦是有安裝 VB6 & ASDI 的電腦, 登入帳號是有 Administrator 權限的 (我的是, 不是不知道可不可以)

ASDI 下載網址: http://www.microsoft.com/ntserver/nts/downloads/other/ADSI25/default.asp

現在要做的就是讀取 NT 4.0 上的所有帳號資訊, 在有 VB6 的電腦上開啟 VB6 新增一個專案是標準執行檔
1. 在工具列中的專案->設定引用項目
2. 加勾選 Active DS Type Library
3. 加勾選 Microsoft Scripting Runtime
4. 確定
5. 在程式碼中貼上以下程式碼:

代碼: [選擇]

Dim sDomain
Dim sNewDomain
Dim sDn
Dim oADobject
Dim w As TextStream
Dim wc As TextStream
Dim fs As New FileSystemObject

Private Sub Form_Load()
    On Error GoTo  ERRGOTOTHE
    '-------------- 修改
    sDomain = "DomainName"                    ' 改成 NT 的 Domain
    sNewDomain = "ad.study-area.org"       ' 改成 2003 AD 的 Domain
    sDn = "DC=ad,DC=study-area,DC=org" '應該知道怎麼改這個吧
    '-------------- 以下不變 ------------------
    If fs.FileExists(App.Path & "\userlist.txt") Then
        fs.DeleteFile (App.Path & "\userlist.txt")
    End If
    Set w = fs.CreateTextFile(App.Path & "\userlist.txt", False, True)
   
    If fs.FileExists(App.Path & "\userlist.csv") Then
        fs.DeleteFile (App.Path & "\userlist.csv")
    End If
    Set wc = fs.CreateTextFile(App.Path & "\userlist.csv", False, True)
   
    Set oDomain = GetObject("WinNT://" & sDomain)
    oDomain.Filter = Array("User")
    For Each oADobject In oDomain
   
        If oADobject.AccountDisabled = False And oADobject.Name <> "Administrator" Then
       
            Debug.Print "oADobject.name:" & oADobject.Name & vbCrLf & _
                "oADobject.FullName:" & oADobject.FullName & vbCrLf & _
                "oADobject.Description:" & oADobject.Description & vbCrLf & _
                "oADobject.HomeDirDrive:" & oADobject.HomeDirDrive & vbCrLf & _
                "oADobject.HomeDirectory:" & oADobject.HomeDirectory & vbCrLf
       
       
            wc.WriteLine oADobject.Name & vbTab & oADobject.FullName & vbTab & oADobject.Description & _
                vbTab & oADobject.HomeDirDrive & vbTab & oADobject.HomeDirectory

            w.WriteLine "dn: CN=" & LCase(oADobject.Name) & ",CN=Users," & sDn
            w.WriteLine "changetype: Add"
            w.WriteLine "CN: " & LCase(oADobject.Name)
            If oADobject.FullName <> "" Then w.WriteLine "displayName: " & oADobject.FullName
            If oADobject.Description <> "" Then w.WriteLine "description: " & oADobject.Description
            w.WriteLine "objectClass: User"
            w.WriteLine "sAMAccountName: " & LCase(oADobject.Name)
            w.WriteLine "userPrincipalName: " & LCase(oADobject.Name) & "@" & sNewDomain
            w.WriteLine ""

        End If
   
    Next
   
    wc.Close
    w.Close
   
    MsgBox "OK"
    End

ERRGOTOTHE:
    MsgBox "ERROR"
    End
End Sub


6. 存檔
7. 按 F5 執行
(在剛剛的路徑下會有 userlist.txt 與 userlist.csv, csv 沒用到, 但可以當清單來用)
8. 將 userlist.txt 複製到 2003 Server 中
9. 在 2003 命令提示字元下匯入的指令: ldifde -i -f userlist.txt -j . -v -y -u -k

這樣子就在 2003 建好了原來 NT 4.0 所有的帳號囉

不過所有的帳號預設是停用的, 再去將停用的勾勾勾掉就可以啦
另外密碼就在第一次登入時(密碼空白)會請使用者重新設定密碼

缺點是: Client 要改一下網域才行
優點是: 不影響原來的 NT 4.0 網域

最後... 等到測試 ok 後就可以把 NT 4.0 關機啦


請問可以弄成執行檔嗎?
因為沒有VB 6 沒法使用