わかりました、これは私の問題です。基本的に 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 スイッチは、2 番目のグループのコンテンツをミラーリングしているため、最初のグループからコンテンツを削除します。つまり、両方のコンテンツを持つことはできません。
これは、/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 のファイルまたはフォルダーが実際にいずれかのソースに存在するかどうかを確認したいと思います。そうでない場合は、ローカル パスから削除します。おそらくこれらのメンバーチェックで組み合わせることができるものはありますか?