通过命令行在Active Directory中创建含MSI安装启动脚本的GPO
创建含启动脚本的软件安装GPO解决方案
一、你之前的注册表修改方式错误的原因
你尝试修改的HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Startup是本地计算机已应用组策略的缓存路径,并非GPO本身的配置存储位置。用Set-GPRegistryValue修改这个路径完全无效,因为GPO的配置数据实际存储在AD域控制器的GPO容器和SYSVOL共享中,不是本地注册表。
二、正确用PowerShell创建带启动脚本的GPO
微软提供了专门管理GPO脚本的cmdlet Set-GPScript,无需手动修改注册表,步骤如下:
- 创建新GPO:
New-GPO -Name "MSI自动安装启动脚本GPO"
- 获取GPO对象:
$gpo = Get-GPO -Name "MSI自动安装启动脚本GPO"
- 准备安装脚本(比如
install_msi.cmd),内容示例:
msiexec /i "\\your-domain.com\SysVol\your-domain.com\Scripts\target.msi" /qn /norestart
- 将脚本复制到该GPO的启动脚本存储路径(替换为你的域信息):
$scriptPath = "\\your-domain.com\SysVol\your-domain.com\Policies\$($gpo.Id)\Machine\Scripts\Startup" Copy-Item -Path "C:\your-local-path\install_msi.cmd" -Destination $scriptPath
- 将脚本添加到GPO的计算机启动脚本列表:
Set-GPScript -Guid $gpo.Id -ScriptType Startup -ScriptName "install_msi.cmd" -Context Machine
三、更推荐的软件安装GPO方法(无需脚本)
微软官方推荐直接用GPO的软件部署功能,比脚本更稳定,支持自动修复、部署状态追踪等,步骤如下:
- 打开组策略管理编辑器,定位到目标GPO的计算机配置 > 软件设置 > 软件安装
- 右键选择「新建 > 程序包」,浏览到网络共享上的MSI文件(必须是域内所有客户端可访问的共享路径)
- 选择部署方式:
- 已分配:计算机启动时自动安装,无需用户交互
- 已发布:用户可从「控制面板 > 程序 > 获取程序」中手动安装
内容的提问来源于stack exchange,提问作者AdaRrsh Dubey
相关产品推荐
相关产品推荐

