我在 Windows Server 2003 托管的 Active Directory 中拥有大约 100 个 Windows XP 机箱和一些 Windows 10 机箱的网络。目前正在进行招标,用当前的硬件和服务器软件替换客户端和服务器,但在此之前,我只能忍受这个服务器平台的缺点。
无论如何,我的任务是确保在域用户登录时,将特定文件从服务器复制到他/她的目录中。如果服务器是 2008 或更高版本,这是一项简单的任务,但对于 2003 来说并非如此。
为此,我首先将要分发的文件上传到可通过网络访问的共享,访问方式为//UNC_full_path/文件。
然后,我创建了一个 GPO(禁用了计算机选项),并将用户部分配置为包含单个启动脚本。脚本文件被命名为(为了完整起见)复制文件命令并被放置在 GPO 提供的部分(\域名.local\SYSVOL\域名.local\Policies{policyid}\User\Scripts|登录)。该文件的内容是以下命令:
IF NOT EXIST "%USERPROFILE%\file" copy \\UNC_full_path\file "%USERPROFILE%"
我终于删除了经过身份验证的用户作为策略的目标,并仅添加域管理员,进行一些测试运行。
在 Windows XP 上,执行 gpupdate /force /boot 并以管理员身份登录后,一切按计划进行:如果文件不存在,则将文件复制到用户目录。如果文件存在,则按计划什么也不会发生。
在 Windows 7 上进行测试也成功了。然而,在 Windows 10 上执行同样的操作却没有任何结果……事实上,正如我测试的那样,Windows 10 客户端似乎很“固执”,不尊重所有使用某种基于 cmd 的命令脚本的 GPO。
我不知道该如何解决这个问题。欢迎提出任何想法。
再次提醒,请记住我们讨论的是 Server 2003,因此通常的 2008+ 技巧不适用。
答案1
从 Windows 8.1 开始,默认情况下,登录过程会将登录脚本延迟 5 分钟。目前有许多编写不当或行为不当的登录脚本,5 分钟的延迟将确保用户的桌面在登录过程中保持响应。
然而,这可能会让许多组织感到意外,特别是因为大多数登录脚本的目的是执行一些操作事先的与桌面交互的用户。
此脚本执行延迟设置存储在以下 GPO 位置:
Computer Configuration\Administrative Templates\System\Group Policy
“配置登录脚本延迟”策略的默认值设置是“未配置”,即“五分钟”。
要检查的第二件事通常是脚本的来源:必须能够访问该文件电脑帐户。此帐户 (COMPUTER$) 将尝试获取文件,然后将其交给当地的用户登录过程。
尝试将“域计算机”添加到您的文件服务器/NTFS ACL,以确保您的目标机器可以读取它。