【发布时间】:2010-05-21 08:42:42
【问题描述】:
好的,这是我的问题。 我正在做一个登录脚本,它基本上将 Microsoft Word 模板从服务器路径复制到每台计算机的本地路径。这是通过检查组成员身份来完成的。
If MemberOf(ObjGroupDict, "g_group1") Then
oShell.Run "%comspec% /c %LOGONSERVER%\SYSVOL\mydomain.com\scripts\ROBOCOPY \\server\Templates\Group1\OFFICE2003\ " & TemplateFolder & "\" & " * /E /XO", 0, True
End If
之前我使用了robocopy的/MIR开关,非常棒。 但是,如果用户是多个组的成员,则 /MIR 开关会从第一个组中删除内容,因为它正在镜像第二个组中的内容。意思是,我不能同时拥有这两个内容。
这可以通过不使用 /MIR 开关来“解决”,而只是让内容被复制。 但是将模板放在服务器上的整个想法是让我可以控制用户通过脚本接收的内容。因此,如果我从服务器路径中删除文件或文件夹,则不会在本地计算机上复制。因为我不再使用 /MIR 开关了。理解?
那么,我该怎么办? 我做了一个小脚本,基本上检查文件夹和文件,然后相应地删除它们,但这实际上最终与 /MIR 开关具有相同的功能。我该如何解决这个问题?
编辑:我发现我真正需要的是一个例程,它扫描我的本地模板文件夹中的文件和文件夹,并检查任何源模板文件夹中是否存在相同的结构。
服务器模板文件夹设置如下:
\\fileserver\templates\group1\
\\fileserver\templates\group2\
\\fileserver\templates\group3\
\\fileserver\templates\group4\
\\fileserver\templates\group5\
\\fileserver\templates\group6\
而进行复制的脚本是这样的结构(伪):
If User is MemberOf (group1) Then
RoboCopy.exe \\fileserver\templates\group1\ c:\templates\workgroup *.* /E /XO
End if
If User is MemberOf (group2) Then
RoboCopy.exe \\fileserver\templates\group2\ c:\templates\workgroup *.* /E /XO
End if
If User is MemberOf (group3) Then
RoboCopy.exe \\fileserver\templates\group3\ c:\templates\workgroup *.* /E /XO
End if
等等等等 使用 /E 开关,我确保它也复制子文件夹。并且 /XO 开关只复制比我的本地路径中的文件和文件夹新的文件和文件夹。 但它不考虑本地路径是否包含服务器模板路径上不存在的文件或文件夹。
所以在复制完成后,我想检查我的 c:\templates\workgroup 上的任何文件或文件夹是否确实存在于任一来源中。如果他们不这样做,请将它们从我的本地路径中删除。也许可以在这些成员检查中组合一些东西?
【问题讨论】:
-
您希望它如何工作?除非您为多个组的用户设置了特殊的模板路径,在这种情况下,您需要为每个组组合设置一个路径。每个组总是会覆盖前一组,您可能需要更复杂的解决方案。
-
如果您完全清除用户模板目录,然后将每个组模板复制到该位置怎么办?这可能需要更多时间,因为您每次都进行完整复制,但至少您始终拥有正确的文件。
-
嗨,后一种是我今天实际使用的方法,需要更新:) 我需要一个更复杂的解决方案。这就是我现在所追求的。
标签: vbscript active-directory robocopy active-directory-group