我有一个专门使用 Google Chrome 的快捷方式。我们的环境中有 XP 和 Windows 7,我想只使用一个快捷方式来管理这两个操作系统。原因是我们的环境相当混乱,一些用户仍在使用登录脚本,而其他用户则使用 GPO 来处理所有事情。
这是我想要用于计算机启动脚本的批处理文件:
if exist "C:\Program Files\Google\" (
mklink /d "C:\Program Files\Google\Chrome" "C:\Program Files (x86)"\Google\Chrome"
) else (
mklink /d "C:\Program Files\Google\" "C:\Program Files (x86)"\Google\"
)
我创建了一个新的 GPO > 将脚本放入该策略的目录中\\domain\SysVol\domain\Policies\{}\Machine\Scripts\Startup
> 将脚本添加到Computer Configuration > Policies > windows Settings > Scripts > Startup > script.bat
。我将该 GPO 链接到创建的 OU,并且计算机对象位于该 OU 中。
我执行了 GPResult,发现 GP 已应用,但并未创建我期望的符号链接。NT Authority\Local System 在 C:\ 中创建文件夹是否存在问题?我尝试将脚本更改为仅此而已,但mkdir C:\temp
也没有用。
注意:如果我在用户配置下运行该脚本并且该用户具有管理员权限,则上述脚本可以完美运行。
更新:尝试使用 Powershell 执行 mklink,但也没有成功。我很确定您无法在启动脚本中运行 mklink。因此,我没有使用此脚本,而是使用用户偏好下的“项目级别定位”根据操作系统复制不同的链接。
答案1
在组策略尝试运行脚本之前,您的计算机的网络连接可能尚未初始化。MSKB 文章Windows 7 客户端在启动时偶尔无法应用组策略解释启动脚本失败的行为,因为 GP 执行脚本时网络链接尚未准备好。提供了两种解决方案:
通过组策略:
- 配置启动策略处理等待时间设置
Computer Configuration > Policies > Admin Templates > System > Group Policy
为足够长的值,以便计算机初始化其网络连接。我使用了 10 秒,非常成功。
通过注册表:
- 创建 DWORD 值GpNetworkStartTimeoutPolicyValue在子项中
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
并提供以秒为单位的十进制等待时间值。