通过 GPO 以提升的权限运行批处理文件

通过 GPO 以提升的权限运行批处理文件

我有一个专门使用 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并提供以秒为单位的十进制等待时间值。

相关内容