![GPO 启动时未运行脚本](https://linux22.com/image/767752/GPO%20%E5%90%AF%E5%8A%A8%E6%97%B6%E6%9C%AA%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC.png)
我在这个网站上看到过很多关于类似问题的帖子,但没有一个帖子有解决我的问题的资源,所以我会尽可能详细地讲解。如果我遗漏了任何信息,请告诉我。
我们有一台服务器上有一个 exe 文件,用于启动名为 Bluebeam 的软件的更新。我编写了一个脚本文件,在启动时启动该 exe,并将其放在与 exe 相同的目录中。当我这样做时,什么也没发生,我会启动一台我知道有委派的计算机,并运行 gpupdate /force 来启动它,然后重新启动计算机,什么也没发生。然后我做了这件事,当有用户登录时,它会做同样的事情。结果相同。我确保启用了“强制”,启用了“在计算机启动和登录时始终等待网络”,最后我还启用了“配置脚本策略处理”
这些都无济于事。我再次查看了脚本文件,发现当我单击 GPO 下的“显示文件”时,我想要的脚本不在那里。所以我手动添加了它并再次强制更新,但没有任何效果。
我现在只在测试环境下运行它,因此我不会将它推送到我的域控制器、服务器或任何用户。我现在将它推送到 2 台不同的计算机,但它们不起作用。
我会向你们展示我拥有的所有东西的照片,如果你们有任何问题请告诉我。
答案1
忘记“计算机配置”中的启动脚本,因为您在那里设置的脚本在任何人登录之前就会由系统执行。
这通常不是交互式的(您可以添加脚本来清理某些目录,或者在计算机上配置某些内容,但您无法在此处启动最终用户应用程序,该应用程序不会显示但可能在后台运行)。
好吧,你也在“用户配置”中配置了登录脚本,这样更好,因为这里的脚本是在用户上下文中执行的,但是,从 Windows 8.1用户登录后五分钟内登录脚本不会运行。这是设计用来加快用户桌面的加载速度的。但是您可以更改它:
如果您希望登录脚本在用户登录时立即运行,则应在计算机配置\管理模板\系统\组策略位置将配置登录脚本延迟设置配置为禁用。
但是,这仍然不是实现目标的首选方式,正如微软所说:
该机制允许管理员在客户端计算机上执行各种维护和管理任务,包括(但不限于)收集诊断信息、调用安全扫描、清理或重置系统状态以及安装工具。
您超出了范围,因为您不想使用您的用例“执行各种维护和管理任务”。
我建议你部署一个运行注册表项相反。你仍然可以使用组策略来部署它:
如果要在计算机上部署此功能(以便它适用于登录计算机的每个人),则在 GPO 中,转到计算机配置->优先(不是“政策”)->Windows 设置->註冊-> 新建注册表项,并在文档 ( HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
) 中显示的路径下创建一个新的 REG_SZ 值,赋予其一个有意义的值名称,并将值数据设置为计算机上可执行文件的路径。
如果要按用户部署此设置,请使用相同的方法,但用户配置而不是计算机配置(也不HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
是 HKLM)。
如果您使用用户配置,请不要忘记将组策略链接到包含用户的 OU 上;如果您使用计算机配置,请不要忘记链接到计算机 OU 上(委派权限也是一样,如果您使用用户配置,请添加用户;如果您使用计算机配置,请添加计算机)
答案2
您已经接近了,但遗漏了一件重要的事情:根据您的屏幕截图,没有任何对象具有此 GPO 的“应用”权限。默认 GPO 将向“经过身份验证的用户”组授予“读取”和“应用”权限。我猜您已从安全过滤设置中删除了它,因此您只能将其应用于您的测试机器。
要修复启动脚本策略并使其仅适用于您的“DANTEST”计算机,请编辑 GPO,打开其属性,然后转到安全设置。添加电脑帐户 DANTEST 并授予其“应用”权限(除了“读取”权限)。
如果要使用登录脚本,请按照相同的过程为测试脚本的用户添加“应用”权限。然后将登录脚本从 GPO 的计算机设置部分移出并移入 GPO 的用户设置中。
最后,当您完成测试后,您只需添加具有“读取和应用”权限的“经过身份验证的用户”,这是默认的安全过滤。