提前感谢大家的帮助。我在网上搜索了好几个小时寻找答案,找到了很多提示/注意事项,但没有一个对我有用。
设置:
- 域控制器 = Windows 2008 R2
- 客户端计算机 = Windows 7 Pro x64 SP1
我有一个应用于一个用户和两台机器的 GPO。该 GPO 执行 2 个登录脚本。
其中一个脚本用于挂载驱动器。它在一台客户机上运行良好,但在另一台使用同一用户的计算机上却无法运行。
笔记:此任务必须通过登录脚本来完成。内置驱动器安装 GPO 已导致通过重新启动等随机丢失凭据缓存,这给我的用户带来了很大的挫败感,我早就开始与它斗争了。此登录脚本在我的一个客户端上运行良好,所以我知道这个问题可以在另一个客户端上得到解决。
场景/问题:
我可以根据 gpresult /r /v 输出确认脚本在客户端上执行 - 我获得了两个脚本的正确的“上次运行”时间戳,证明它们已执行。
其中一个脚本运行正常。它执行了一些 .reg 导入和一些其他任务。
第二个脚本用于安装驱动器,但不起作用。
但是,从用户桌面手动运行 .bat 时,它确实有效。证明脚本语法有效,并且用户具有权限。
以下是脚本内容:
@echo off
timeout /t 3
net use * /delete /yes
timeout /t 3
net use I: \\10.10.6.13\Share0 /user:DOM\myuser F@kePass1 /p:YES
net use \\10.10.6.13\Share1 /user:DOM\myuser F@kePass1 /p:YES
请注意,我故意省略了第二次挂载的驱动器号。
我尝试过的一些方法:
- 禁用快速登录:
Administrative Templates\System\Logon\Always wait for the network at computer startup and logon = Enabled
- 已禁用 UAC
- 重新创建 GPO
- 将脚本放入仅执行脚本执行的隔离 GPO
- 各种“强制”开启/关闭变化
- 脚本中的各种“超时”设置强制等待等。
- 强制“同步运行登录脚本”
- 启用“运行可见的登录脚本” - 但是我什么也没看到。
值得注意的一些关键事项:
- 我可以根据输出确认脚本在客户端执行
gpresult /r /v
- 我获得了两个脚本的正确的“上次运行”时间戳。 - 其他脚本执行正常,只有驱动器安装不起作用。
- 从登录用户的桌面运行完全相同的脚本(.bat 文件)将正常工作。
- 无法正常工作的客户端是虚拟机,另一个是硬件桌面。我认为这没什么关系。虚拟机位于我们专用的 ESX 场中,该场包含同一子网上的许多其他节点。我知道虚拟机管理程序上的网络配置是正确的。
gpupdate /force
我每次进行 GPO 更改时都会运行并确保它已应用gpresult /r /v
- 然后至少在策略更改之间注销并经常重新启动。
我正在考虑将文件放到目标机器上,然后创建一个任务在登录后运行它。但是,为了将文件放在每个客户端上,他们需要访问共享,这正是我想要实现的。
答案1
解决方案背景/信息:
正如 Grant 在对原始问题的评论中所说:登录用户或组(域用户/等)访问共享,并且不在命令中明确定义用户名/密码net use
解决了该问题。
这也解决了 GPO 驱动器安装的问题。不定义“以...身份登录”字段并允许它自动对已登录用户进行身份验证。
这确实解决了问题但是这并不能解答为什么我最初尝试使用共享域帐户却不起作用的根本原因。
答案概要/步骤:
- 授予用户或组对共享的访问权限(在文件服务器上)-我个人只允许所有“域用户”
- 不要
net use
像我最初所做的那样,定义一个明确的(共享)用户来使用命令访问挂载。
这解决了登录脚本和 GPO 驱动器安装的问题。我最终放弃了脚本,只使用了 GPO。不幸的是,这无法识别根本原因为什么它一开始就无法用明确的解释来解释。
如果有人处于“必须”以这种方式设置的环境,我预见他们会陷入极大的挫败感。