﻿# Windows Server 2008 R2 Active Directory 疑難雜症心得筆記

昨天去參加微軟對合作伙伴所開的 **Windows Server 2008 / R2 Active Directory 疑難雜症專班** 課程，每次去參加由微軟技術支援中心所開的課程都可以學到好多超實用的知識，也很感謝講師 Dennis 不藏私的傳授各種實務密技，在下課前還得到一本[老師送的書](http://www.books.com.tw/exep/prod/booksfile.php?item=0010473753)，實在很開心。這次的課程十分豐富，很難透過文章一次表達清楚，所以我就整理一下這次教學的重點筆記，如果都能理解，相信對未來遇到 AD 的疑難雜症時能夠有更明確的解決方向。

### 針對 AD 基本檢查與除錯有以下關鍵

-   檢視**系統新啟動的事件記錄** (重新開機到開機完成這段時間的事件記錄)
    
-   檢視 **網域主控站** (Domain Controller) 相關服務的啟動狀態
    
    -   KDC
    -   Netlogon
    -   FRS
    -   w32time
-   檢查**網路相關設定**
    
    -   IP
        
    -   DNS
        
    -   檢查 **DNS 伺服器**上的 **SRV 紀錄**是否都正常
        
    -   缺少記錄？
        
    -   重複記錄？
        
-   檢視 **AD 五大角色 (FSMO) 及位置**
    
    -   執行以下命令查詢 AD 五大角色與所在位置
        
        ```bash
        netdom query fsmo
        ```
        
    -   FSMO ([Flexible Single Master Operations](http://en.wikipedia.org/wiki/Flexible_single_master_operation)) 五大角色分別為：
        
        -   架構主機 (Schema Master)
            
            -   負責更新目錄架構。
        -   網域命名主機 (Domain Naming Master)
            
            -   負責變更樹系網域目錄名稱空間。
        -   基礎架構主機 (Infrastructure Master)
            
            -   跨網域物件參照中，負責更新物件 SID 與辨別名稱。
        -   RID 主機 (RID Master)
            
            -   負責處理 RID (Relative ID) 集區中來自給定的網域的所有 DC 要求。
        -   PDC 模擬器 (PDC Emulator)
            
            -   對舊版的工作站、成員伺服器與網域控制站宣稱自己為主要網域控制站 (PDC)。
-   檢查 **網域主控站** (Domain Controller) 預設分享是否有異常
    
    -   `SYSVOL`
    -   `NETLOGON`
-   檢查 **網域主控站** (Domain Controller) 在 AD 中的 UserAccountControl 屬性是否為 532480
    
    -   **網域主控站** ( Domain Controller ) 預設 UserAccountControl 屬性為 532480
    -   **成員伺服器** ( Member Server ) 預設 UserAccountControl 屬性為 4096
    -   **網域使用者** ( User ) 預設 UserAccountControl 屬性為 512
-   檢查 **C:\\Windows\\Debug** 目錄下的記錄檔
    
    **常用的 AD 診斷工具與常用指令**
    
    -   [網域控制站診斷工具 (dcdiag.exe)](http://technet.microsoft.com/zh-tw/library/cc776854\(WS.10\).aspx?WT.mc_id=DT-MVP-4015686) -- DCDiag
        
        ```bash
        DCDiag /v
        ```
        
        ```bash
        DCDiag /test:dns
        ```
        
    -   [執行與複寫相關的工作 (repadmin.exe)](http://technet.microsoft.com/zh-tw/library/cc778305.aspx?WT.mc_id=DT-MVP-4015686) -- Repadmin
        
        -   [Repadmin Overview](http://technet.microsoft.com/en-us/library/cc755360.aspx?WT.mc_id=DT-MVP-4015686)
            
        -   [Repadmin Examples](http://technet.microsoft.com/en-us/library/cc773062.aspx?WT.mc_id=DT-MVP-4015686)
            
            ```bash
            Repadmin /replsummary
            ```
            
            ```bash
            Repadmin /showreps 或 Repadmin /showrepl
            ```
            
            ```bash
            Repadmin /syncall
            ```
            
    -   [使用 Netdom.exe 工具 (netdom.exe)](https://web.archive.org/web/20130620032855/http://support.microsoft.com/kb/329721) -- NetDOM
        
        ```bash
        netdom query fsmo
        ```
        
    -   [網域安全通道公用程式 (nltest.exe)](https://web.archive.org/web/20070104071203/http://support.microsoft.com:80/kb/158148/) -- NLTest
        
        ```bash
        nltest /dsgetdc:<DomainName> /force
        ```
        
        ```bash
        nltest /SC_RESET:<DomainName>\<PDCServerName>
        ```
        
        > 註: **nltest** 可用來重新建立用戶端與 DC 之間的安全通道，可以不用退出網域再重新加入。
        
    -   [ADSI 編輯器 (adsiedit.msc)](http://technet.microsoft.com/en-us/library/cc773354.aspx?WT.mc_id=DT-MVP-4015686) -- ADSI Edit
        
        -   [Active Directory Management Support Tools](http://technet.microsoft.com/zh-tw/library/cc738135\(WS.10\).aspx?WT.mc_id=DT-MVP-4015686)
        -   [AD LDS 系統管理工具](http://technet.microsoft.com/zh-tw/library/cc753577.aspx?WT.mc_id=DT-MVP-4015686)

### Windows Server 2008 R2 群組原則物件 (GPO) ([Group Policy Object](http://en.wikipedia.org/wiki/Group_Policy_Object)) 疑難排解

-   瞭解 GPO 元件及結構
    
    -   群組原則容器 (GPC) -- Group Policy Container
        
        -   版本資訊
        -   狀態資訊
        -   元件清單
    -   群組原則範本 (GPT) -- [Group Policy Template](http://en.wikipedia.org/wiki/Group_Policy_Template)
        
        ```
        C:\Windows\SYSVOL\sysvol\<DOMAIN>\Policies\{<GUID>}
        ```
        
        > 註: 在 Windows Server 2003 時稱為 ADM (系統管理範本)
        
-   瞭解 GPO 繼承模式
    
    -   Site (站台) --> Domain (網域) --> OU (組織單位)
-   瞭解 GPO 套用模式
    
    -   GPO 強制套用模式 ( Enforcing GPOs )
    -   GPO 阻礙繼承模式 ( Blocking Inheritance )
-   新群組原則 - 本機群組原則物件處理
    
    -   用戶端 GPO 套用順序
        
        ```bash
        本機 GPO > Site > Domain > OU
        ```
        
    -   Windows Vista / 7 以上版本支援 關閉本機群組原則物件處理
        
        [![image](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/f24d8bb58559da5d4b33-image_thumb_44.png "image")](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ae04564544ccb505ad6e-image_365.png)
        
    -   若啟用 "**關閉本機群組原則物件處理**" 套用順序變成
        
        ```bash
        Site > Domain > OU
        ```
        
-   GPO 在 **網域主控站** (Domain Controller) 可能發生的問題
    
    -   `SYSVOL 不一致`
        
        -   AD 在進行 GPO 檔案複寫時有問題導致
            
        -   可使用 `GPOTool.exe` 工具進行檢測 DC 之間 SYSVOL 的一致性
            
            ```bash
            gpotool /verbose
            ```
            
            > 備註: `GPOTool.exe` 工具在 [**Windows Server 2003 Resource Kit Tools**](http://web.archive.org/web/20120101053958/http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17657) 裡面！
            
        -   經實測，`gpotool` 有時後雖然會回傳 sysvol mismatch 的錯誤，但事實上如果 GPO 套用的過程沒有問題的話，可以不予理會。`SYSVOL` 資料夾的覆寫主要根據 DFSR 或 FRS 服務進行複寫，這部分與 AD 複寫並不一樣。以下英文描述可供參考：
            
            > **SYSVOL mismatch: Can be caused by FRS failing to replicate files, or folders between domain controllers.** There are several possible reasons for this, for example file sharing violations and FRS replication filters (an administrator drops a file to SYSVOL, which is excluded from replication by FRS filters, so this file will never replicate to other domain controllers and create a gpotool.exe error message. Please, read [KB 296944](https://web.archive.org/web/20121117080328/http://support.microsoft.com:80/kb/296944 "How To Use File Replication Service File and Folder Filters in Windows 2000") for more information.) To troubleshoot this error message you can start with creating a dir /s ouputs from the domain controllers listed in the gpotool.exe output and compare the number of files and folders. (Windiff.exe can be used as well.)
            
    -   `Version 不一致`
        
        -   若 GPC 版本編號 > GPT 版本編號
            
            -   直接修改 GPT 版本編號
        -   若 GPT 版本編號 > GPC 版本編號
            
            -   直接修改 GPC 版本編號
    -   `File not found`
        
        -   SYSVOL 目錄下不存在特定 Policy 資料夾
    -   `Access Denied`
        
        -   SYSVOL 目錄下的資料夾存取權限問題
-   GPO 在 **成員伺服器** ( Member Server ) 可能發生的問題 ( 大多是網路連線問題 )
    
    -   TCP/IP 連線問題
        
        -   IP 設定錯誤
        -   Switch 故障
        -   網路線品質不良
    -   DNS 名稱解析問題
        
        -   DHCP 指派的 DNS 不正確 (如更換 IP 分享器之後啟用了 DHCP 又設定錯誤的狀況)
        -   指定錯誤的 DNS 位址 ( 例如使用者用的是網域電腦但卻設定了 168.95.1.1 為 DNS )
    -   慢速網路 (slowlink)
        
        -   在 20 年前的網路的確有可能有此問題，現在很少有慢速網路的狀況。
    -   快速登入 (Fast Logon)
        
        -   使用者在開機完成後會出現登入畫面，不過看到登入畫面並不代表作業系統已經可以提供網路連線，如果你的電腦開機速度過快，而你又在這時立即登入的話，就會有可能會導致無法登入 AD 或 GPO 無法套用的情況！

### GPO 問題在【用戶端】可用的工具

-   [GPUpdate](http://technet.microsoft.com/en-us/library/bb490983.aspx?WT.mc_id=DT-MVP-4015686)
    
    ```bash
    GPUpdate /force
    ```
    
    > [使用 GPUpdate.exe 更新群組原則設定](http://technet.microsoft.com/zh-tw/library/cc739112.aspx?WT.mc_id=DT-MVP-4015686)
    
-   [GPResult](http://technet.microsoft.com/zh-tw/library/cc733160.aspx?WT.mc_id=DT-MVP-4015686)
    
    ```bash
    GPResult /v
    ```
    
    ```bash
    GPResult /z
    ```
    
    > [以 GPResult.exe 判定原則結果組](http://technet.microsoft.com/zh-tw/library/cc756960.aspx?WT.mc_id=DT-MVP-4015686)
    
-   **原則結果組**主控台(RSOP.msc) -- RSoP ( Resultant Set of Policy )
    
    ```bash
    RSoP.msc
    ```
    
    > [How To Install and Use RSoP in Windows Server 2003](https://web.archive.org/web/20110922121746/http://support.microsoft.com/kb/323276)
    
-   **GPOTool.exe**
    
    -   `gpotool /verbose`
        
        > 註: 此工具需下載 [**Windows Server 2003 Resource Kit Tools**](http://web.archive.org/web/20120101053958/http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17657)，安裝好之後此工具位於：`C:\Program Files\Windows Resource Kits\Tools`
        
    -   如果執行結果的最後一行出現 **Errors found** 的話，可在 DC 上利用 `repadmin /syncall` 指令嘗試立即覆寫，覆寫成功後再次執行 `gpotool /verbose` 看是否還有錯誤。
        

### GPO 問題在【用戶端】可善用 GPO 套用記錄檔來檢查問題

在啟用 **GPO 套用記錄** 後，該檔案詳細記錄 GPO 套用的過程，其內容資訊非常豐富並可幫助你找出用戶端電腦在套用 GPO 時的各種問題，例如登入時間過長或無法套用特定原則等問題。

> 備註：請在用戶端電腦新增機碼以啟用紀錄。

**Windows Server 2008 / Windows Vista 以後**的版本可透過設定以下機碼啟用紀錄功能：

-   `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Diagnostics`
    
-   值名稱：`GPSvcDebugLevel`
    
-   值類型：`REG_DWORD`
    
-   值資料：`0x00030002` (**hex**) -- 備註：十進位數值為 196610
    
-   快速套用指令
    
    ```bash
    reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Diagnostics" /v "GPSvcDebugLevel" /t REG_DWORD /d 0x00030002 /f
    ```
    
-   快速關閉指令
    
    ```bash
    reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Diagnostics" /v "GPSvcDebugLevel" /f
    ```
    
-   **GPO 套用記錄檔所在路徑**
    
    ```bash
    C:\Windows\debug\UserMode\GPSVC.log
    ```
    

**Windows Server 2003 / Windows XP 以前(含)** 的版本可透過設定以下機碼啟用紀錄功能：

-   `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`
    
-   值名稱：`UserEnvDebugLevel`
    
-   值類型：`REG_DWORD`
    
-   值資料：`0x00030002` (**hex**) -- 備註：十進位數值為 196610
    
-   快速套用指令
    
    ```bash
    reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "UserEnvDebugLevel" /t REG_DWORD /d 0x00030002 /f
    ```
    
-   快速關閉指令
    
    ```bash
    reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "UserEnvDebugLevel" /f
    ```
    
-   **GPO 套用記錄檔所在路徑**
    
    ```bash
    C:\Windows\debug\UserMode\Userenv.log
    ```
    

### 相關連結

-   [Group Policy Collection](http://technet.microsoft.com/en-us/library/cc779838.aspx?WT.mc_id=DT-MVP-4015686)
-   [Managing Active Directory FSMO Roles](http://www.windowsnetworking.com/articles_tutorials/Managing-Active-Directory-FSMO-Roles.html)
-   [How Domain Controllers Are Located in Windows](http://support.microsoft.com/kb/247811/en-us?WT.mc_id=DT-MVP-4015686)
-   [群組原則101](https://web.archive.org/web/20120201133302/http://www.microsoft.com:80/taiwan/technet/columns/profwin/tna101gp.mspx)
-   [Windows Server 2008 R2 Active Directory 建置實務](http://www.books.com.tw/exep/prod/booksfile.php?item=0010473753)
-   [How to configure Active Directory diagnostic event logging in Windows Server 2003 and in Windows 2000 Server](http://support.microsoft.com/kb/314980/en-us?WT.mc_id=DT-MVP-4015686)
