前言
对Windows活动目录有所了解的管理员应该对SYSVOL不陌生,它是用来存储域公共文件服务器副本的共享文件夹,例如我们用得最多的组策略设置、脚本等都是存在这个共享目录中的。如果组织内有多台域控制器,那么它们就在域中所有的域控制器之间通过FRS服务相互复制。而NETLOGON共享则是SYSVOL目录中一个文件夹Scripts的共享名,顾名思义就是用来保存脚本信息的。SYSVOL文件夹的重要性不想多说,然而有的时候它就偏偏出问题,导致活动目录AD故障层出,通常组策略无法执行,在域控制器或成员机器上的事件日志中每隔5分钟就记录ID号为1058和1030的错误消息,让人很是恼火。而通常遇得最多的SYSVOL问题就是如下两种:

  1. SYSVOL和NETLOGON共享丢失。这种情况在辅助域控制器上通常会出现,但有时也在第一台域控制器上也可能会出现这种情况。另外,当对活动目录执行灾难还原后也有可能遇到这个情况
  2. 管理员有意或无意的删除了整个或部分SYSVOL目录中的文件,这种情况在管理员误操作时遇得比较多,我就曾遇到有人将SYSVOL迁移到E盘,然后误操作将E盘格式化
    OK,不管是什么原因导致出现以上两个问题,总之我将在这篇文章中着手解决这两个问题,希望对大家有帮助

  3. 先来解决第一个常见问题,假设只是SYSVOL和NETLOGOGN共享丢失,但是文件夹结构尚在。这个问题比较好解决。为了模拟故障,我手动将SYSVOL共享取消了。如图1和2

  4. 打开注册表编辑器,找到如下键值:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters\Backup/Restore\Process at Startup
    然后在右边找到BurFlags,将其值改为D4(16进制)后退出,(修改此注册表会重建组策略和域脚本等文件夹,需要先做系统状态备份和手工文件备份以及快照备份多重保险)

  5. 再分别运行如下命令重启相关服务,
    Net stop netlogon & net start netlogon
    Net stop ntfrs & net start ntfrs

  6. 这个时候我们再来看看SYSVOL共享有没有恢复。如图5、6所示,丢失的SYSVOL共享和NETLOGON共享已经成功恢复。
    (注:第2步修改的注册表键值会在第3步操作后自动清除回到默认值0)

二、
在接下来的演示中,我将SYSVOL文件夹全部删除,然后大家分享一下如何重建SYSVOL目录树中的内容和重建共享

  1. 如图7所示,我已经手动将SYSVOL目录都删除来模拟故障

  2. 由于操作系统并不会自动重建SYSVOL的目录结构,所以我们需要手动按照原有的实际结构来建立。
    SYSVOL 文件夹结构:
    • domain
    • DO_NOT_REMOVE_NtFrs_PreInstall_Directory
    • Policies
    • {GUID}
    • Adm
    • MACHINE
    • USER

• {GUID}
• Adm
• MACHINE
• USER

• {etc.,}
• scripts
• staging
• staging areas
• MyDomainName.com
• scripts
• sysvol(sysvol share)
• MyDomainName.com
• DO_NOT_REMOVE_NtFrs_PreInstall_Directory
• Policies
• {GUID}
• Adm
• MACHINE
• USER

• {GUID}
• Adm
• MACHINE
• USER

• {etc.,}

• scripts(NETLOGON share)

上面的文件夹结构是不是看花了?没关系,看我的具体操作:
a. 在windows目录下新建一个文件夹叫SYSVOL
b. 在c:\windows\sysvol目录下再新建一个文件夹:domain、staging、staging areas、sysvol
c. 在C:\WINDOWS\SYSVOL\domain目录下新建两个文件夹:Policies和Scripts
d. 在C:\WINDOWS\SYSVOL\staging目录下新建一个文件夹:domain
e. 在C:\WINDOWS\SYSVOL\staging areas目录下新建一个和域名相同的文件夹,例如我的是a.com,那么就在该目录新建a.com文件夹
f. 和步骤e一样,在C:\WINDOWS\SYSVOL\sysvol目录也新建一个和域名相同的文件夹,如C:\WINDOWS\SYSVOL\sysvol\a.com,至此文件夹的结构被我们重建得差不多了。

  1. 由于接下来我们需要用到两个小工具,所以要在域控制器上安装Windows 2003 Resource kit,下载地址为:
    http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f8%2fe%2fc%2f8ec3a7d8-05b4-440a-a71e-ca3ee25fe057%2frktools.exe

  2. 运行如下命令重启NTFRS服务:
    Net stop ntfrs & net start ntfrs

  3. 重启服务后,NTFRS服务会自动帮我们完善前面的SYSVOL目录结构,例如添加相应目录的隐藏属性、增加DO_NOT_REMOVE_NtFrs_PreInstall_Directory隐藏文件夹等等。运行如下命令后,得出如图8的结果表示正常
    ntfrsutl ds |findstr /i "root stage"

然后利用Linkd程序来挂接相应的目录,创建如下两个交接点: (注:交接点外表像文件夹而且运转也像文件夹(在 Windows Explorer 中无法将它们与普通文件夹区分开来),但它们不是文件夹。交接点包含了与另一文件夹的链接。程序打开它时,交接点会自动将程序重新定向至交接点所链接的文件夹。而重新定向对于用户和应用程序是完全透明的。SYSVOL系统卷就是采用的这种文件夹结构)
a. C:\WINDOWS\SYSVOL\SYSVOL\域名 ---- (挂接到) C:\WINDOWS\SYSVOL\DOMAIN
b. C:\WINDOWS\SYSVOL\staging areas\域名 ---(挂接到) C:\WINDOWS\SYSVOL\staging\domain

具体命令为:
a. 在“开始“”运行”中输入”cmd”,然后在打开的”命令提示窗口”输入:
Linkd %systemroot%\SYSVOL\SYSVOL\a.com %systemroot%\SYSVOL\DOMAIN
Linkd "%systemroot%\SYSVOL\staging areas\a.com" %systemroot%\SYSVOL\staging\domain

打开注册表编辑器,找到如下键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters\Cumulative Replica Sets{GUID},其中GUID是类似f791c404-f37f-4634-9899d59d9397871e这样的字符串值。
然后找到右边的BurFlags,同样将其修改为D4,完成后退出注册表编辑器,

  1. 运行如下命令重启服务:
    Net stop ntfrs & net start ntfrs

  2. 激动人心的时候来了,此时打开SYSVOL目录和输入net share命令,会发现SYSVOL和NETLOGON共享都重建出来了。

  3. 整个步骤进行到这里,似乎可以告一段落了。但是你在域控制器上仍有可能继续收到1058、1030的错误信息,如图15、16.这是为什么呢?输入UNC路径\a.com后,的确能看到SYSVOL和NETLOGON共享啊。
  4. 其实并不是我们操作错误,而是在这个演示中,我为了彻底重建SYSVOL目录将之前的删除了,所以同时也删除了所有的域策略,例如就删除了系统默认的两条策略““域安全策略”和“域控制器安全策略”。因为GPO策略信息是以文件的形式保存在C:\WINDOWS\SYSVOL \domain\Policies这个路径下的。尽管我们重建了SYSVOL目录,但是并没有重建策略文件,所以导致事件日志报错。当然,““域安全策略”和“域控制器安全策略”也就无法打开咯

  5. 如何解决上面的问题呢?我认为至少有3个方法可以解决:

a. 最简单也是最值得推荐的方法就是直接从别的域控制器上将以上的策略文件拷贝到该域控制的C:\WINDOWS\SYSVOL\sysvol\a.com\Policies目录下。如图19。不要告诉我你没有其他域控制器,重新安装一台虚拟机总是可以的吧。
(注:{31B2F340-016D-11D2-945F-00C04FB984F9}是““域安全策略”的文件策略;
{6AC1786C-016F-11D2-945F-00C04fB984F9}是“域控制器安全策略”的策略文件)

b. 如果您以前曾通过GPMC备份过GPO,那么直接还原过去即可。这种方法是最没有副作用的。不止能还原系统默认的GPO,还能还原自定义的GPO设置。

c. 如果没有做过GPO的备份,又懒得从其他域控制器拷贝,那么还有一个办法是使用工具直接重建这两条策略,方法是安装Resource Kit后运行命令dcgpofix /target:both。这个命令会重新建立这两条策略到域控制器刚安装好时的默认状态,既然是重建那么你曾在这两条策略上做的设置都会清空,这点请注意。
(注:运行dcgpofix时如果提示“此域的 Active Directory 架构版本和此工具所支持的版本不匹配。”,那么请将命令修改为dcgpofix /ignoreschema /target:both忽略架构版本。之所以有这样的提示是因为我的系统现在是2003 SP2,而Resource Kit工具包是配合2003的,没有找到专门匹配2003SP2的资源包,其实不必理会,直接忽略警告信息就OK。)