[脚本策略] 的 CSE(Client Side Extension) 为 [gpscript.dll],会将策略反应到注册表的如下位置:
■启动/关机策略
HKLM¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥Group Policy¥Scripts
HKLM¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥Group Policy¥State¥Machine¥Scripts
■登陆/注销策略
HKCU¥Software¥Microsoft¥Windows¥CurrentVersion¥Group Policy¥Scripts
HKLM¥Software¥Microsoft¥Windows¥CurrentVersion¥Group Policy¥State¥<ユーザー SID>¥Scripts
[脚本策略] 的执行主体为 [gpscript.exe]。
-->由此应用程序执行脚本。
存在以下四种脚本策略
■计算机配置
[启动脚本 (StartUp)] & [关机脚本 (Shutdown)],分别在计算机启动/关机时执行,运行在 [SYSTEM] 上下文。
■用户配置
[登陆脚本 (Log-in)] & [注销脚本 (Log-off)],分别在用户登陆/注销时执行,运行在所登陆用户的上下文。
-->如果用户拥有本地管理员权限,则会忽略 UAC 弹窗直接执行。
-->如果用户没有本地管理员权限,则脚本运行失败,退出且不输出错误结果。
默认位置位于 SYSVOL 共享位置下:
-->可以更改,但不建议更改,脚本的文件大小不大,且运行在系统上下文,应限制为仅由域管理员进行管理。
-->当然,如果内网环境中引入了认证环节(未登陆时访问不了域控),可以事先将脚本分配到用户计算机上,路径填写用户设备上的绝对路径。
-->不过,PowerShell 脚本在未联网的状态下执行,所以,如果希望断网执行脚本,请使用 .bat 脚本。
[\<ドメイン名>\sysvol<ドメイン名>\Policies{GPO-GUID}\MACHINE\Scripts\Startup]
[\<ドメイン名>\sysvol<ドメイン名>\Policies{GPO-GUID}\MACHINE\Scripts\Shutdown]
[\<ドメイン名>\sysvol<ドメイン名>\Policies{GPO-GUID}\USER\Scripts\Logon]
[\<ドメイン名>\sysvol<ドメイン名>\Policies{GPO-GUID}\USER\Scripts\Logoff]
■脚本策略的处理中,分为 [前台处理] 和 [后台处理],
■以下策略的执行仅发生在 [前台处理] 期间。
-->其余策略在 [前台处理] 和 [后台处理] 期间均执行。
- StartUp(启动) & Log-on(登陆) 脚本策略
- 文件夹重定向
- 驱动器映射 (Drive Map)
- 软件安装
- 磁盘配额 (Disk quota)
其中,[前台处理] 再分为为 [同步模式] 和 [异步模式] 两种模式。
-->区别在于是否与解锁 Windows 桌面相关进程同步。
-->[关机脚本] 和 [注销脚本] 采用 [同步模式] 进行处理,处理模式不可变更。
-->[启动脚本] 和 [登陆脚本] 采用 [异步模式],处理模式可通过以下组策略变更。
-->Path:计算机/用户配置 > 策略 > 管理模板 > 系统 > 脚本 > [同步运行登陆脚本]/[异步运行启动脚本]。
-
[同步模式] (Synchronous mode),全称:前台处理同步模式。
-->脚本将逐条执行,前项成功后执行下一条,最后执行有关解锁 Windows 桌面的相关进程。
-->所以,请注意避免将配置耗时过长的脚本配置在 [关机脚本] 或 [注销脚本] 中。
1-1 服务端 OS 默认采用此模式;
-->这并不意味着拉取不到策略就不能完成登陆,
-->GPSVC(组策略客户端服务) 拉取策略超时后,会视为没有策略变更,进而不调用脚本策略的 [gpscript.dll] 而走缓存登录流。
1-2 客户端及服务端 OS 的 [关机脚本] 和 [注销脚本] 默认均采用此模式;
同时,以下策略涉及 [关键功能],客户端及服务端 OS 均采用 [同步模式] 进行处理。
1-3 文件夹重定向;
1-4 软件安装;
1-5 基本设定的驱动器映射 (Drive Map);
1-6 基本设定的磁盘配额。 -
[异步模式] (Asynchronous mode),全称:前台处理异步模式。
-->所有脚本依次开始执行,前序脚本未执行完成即开始后续脚本的执行。
-->脚本执行完毕与否不影响解锁 Windows 桌面的相关进程。
2-1 客户端 OS 默认采用此模式(除 [关机脚本] 和 [注销脚本] 及 [关键功能])。
为了避免同步模式下运行策略反应致使 OS 启动 (展示登陆界面) 和 Windows 登陆 (展示桌面) 花费较长时间,
Windows 客户端 OS 默认启用了 [高速登陆] 功能,使得用户可以不等待网络就绪,使用缓存登录。
-->某些情况下,这可能会导致仅在 [前台处理] 的策略不生效。
-->如果希望这些策略*在用户登陆即生效,则可以启用 [计算机启动和登陆总是等待网络] 策略。
-->这些策略是指:[启动脚本]、[登陆脚本]、[文件夹重定向]、[软件安装]、[磁盘配额]。
-->如果启用,则包括脚本策略,GPO 策略的反映都将运行在 [同步模式] 下,直至策略处理完毕才展示登陆界面 or 展示桌面。
-->Path:计算机配置 > 策略 > 管理模板 > 系统 > 登陆 > [计算机启动和登陆时总是等待网络]。
已知计算机启动时网络需要初始化,那么,
若网络未完成初始化时 [GPSVC] 便开始脚本策略的处理,则会导致策略读取失败,进而得不到反映。
-->换句话说,即便是 [同步模式] 的策略,如,软件安装、驱动器重定向等,如果超过等待时间仍不能拉取到策略,也会跳过不执行。
如果希望尽可能避免网络初始化导致的前台处理的策略得不到反映的情况,可以通过以下组策略来定义 [启动策略] 的迟延时间。
-->默认等待 30 秒,如果指定数值,OS 启动后 [GPSVC] 将严格等待相应时间,之后才展示 Windows 登陆界面。
-->Path:计算机配置 > 策略 > 管理模板 > 系统 > 组策略 > [指定启动策略处理等待时间]。
已知脚本的运行需要时间,那么,
处于 [同步模式] 执行的脚本策略因为某种原因迟迟不能完成,会导致用户无法进入登陆界面 or 桌面。
-->默认情况下,Windows 服务端 OS 的所有脚本策略,以及 Windows 客户端 OS 的 [注销脚本] 和 [关机脚本] 会以 [同步模式] 运行。
如果环境中发生这种长时间登陆不了的情况,可以通过以下组策略来定义最长等待时间。
-->默认 [GPSVC] 最大允许脚本执行 10 分钟,超时未结束则强制结束所有未完成的脚本。
-->当然,如果始终有脚本策略未能完成,也可考虑延长此时间(但可能会让用户长时间等待)。
-->Path:计算机配置 > 策略 > 管理模板 > 系统 > 脚本 > [指定组策略脚本的最长等待时间]
已知脚本的运行需要消耗系统性能,那么,
如果希望处于 [异步模式] 下执行的 [登陆脚本] 策略不与其他服务竞争系统性能,可以通过以下组策略来定义登陆脚本的迟延时间。
-->当然,如有需要,可定义 [0] 以立即执行 [登陆脚本]。
-->默认 [GPSVC] 迟延 5 分钟执行 [登陆脚本]。
-->Path:计算机配置 > 策略 > 管理模板 > 系统 > 组策略 > [配置登陆脚本延迟]
已知将 [配置登陆脚本延迟] 定义为 [0] 可以立即执行 [登陆脚本],那么,
如果希望 [登陆脚本] 未执行完成前不解锁 Windows 桌面,可以通过以下组策略将 [登陆脚本] 的执行配置为 [同步模式]。
-->配置此策略时,[配置登陆脚本延迟] 的配置将被忽略。
-->Path:计算机配置 > 策略 > 管理模板 > 系统 > 脚本 > [同步运行登陆脚本]
已知 [启动脚本] 和 [登陆脚本] 仅发生在 [前台处理] 期间,
若企业内网中引入了认证机制,未登录系统时无法访问位于网络路径中的脚本时,可以使用以下组策略,将脚本分配至客户端本地。
-->Path:计算机配置/用户 > 首选项 > Windows 设置 > 文件
-->之后,定义 [启动脚本] 和 [登陆脚本] 时,路径填写脚本的本地路径。