我写了一个.cmd文件,它调用了十个不同的.exe文件。 我能够在本地运行这个.cmd文件,在我的服务器上,它工作正常。
当我使用[gpedit.msc](组策略编辑器)作为“计算机configuration,Windows设置”并将我的.cmd文件设置为启动脚本时,似乎没有问题。
当我重新启动我的服务器时,启动脚本永远不会被调用。 我无法弄清楚为什么。 我的目标是每次启动服务器时执行此脚本。 (不要login)。
我正在testing的服务器不是域控制器。 我不确定这是否与问题有关? 帮帮我?
ps这些是EC2 Amazon云服务器。 痛苦在我身边。
从“策略结果集”( rsop.msc )开始,看看是否正在处理包含脚本的GPO。 大多数情况下,我发现,政策应用程序的问题最终会成为系统pipe理员理解连接GPO的位置与适用于给定用户或计算机的GPO列表如何由操作系统实际计算的差异。
如果GPO正在处理,但脚本没有执行,我会检查脚本上设置的权限是否允许主机的计算机帐户读取/执行该脚本,并且GPO中引用的path正确parsing在主题电脑上。
编辑:
您在“策略结果集”工具中查找错误的地方。 “软件设置”是组策略中软件可以“强制”安装的地方。 您对“计算机设置/ Windows设置/脚本(启动/closures)”感兴趣。
如果在RSoP中的“计算机设置”节点的“属性”的“常规”选项卡上列出了您指定脚本的GPO,我将非常感兴趣。 我怀疑你会发现GPO没有在那里列出,因此没有被处理。
你在哪里链接了你创build的指定启动脚本的GPO?
编辑2:
因此,您可以在RSoP中的“脚本(启动/closures)”节点下看到您的脚本path。 你应该有一个“最后执行”列。 如果列出的date/时间那么组策略客户端已经尝试执行您的脚本。 如果没有时间列出,那么它没有试图执行它。
希望您已经查看了应用程序事件日志并validation了没有任何logging的错误:执行脚本。 如果你没有,看看那里。
假设脚本正在执行,我会考虑添加一行来在计算机上留下某种“标记”,以肯定地validation脚本正在执行。 就像echo foo > %TEMP%\foo.txt会在系统范围的%TEMP%目录(通常是“C:\ WINDOWS \ TEMP”)中给你一个文件,它可以最终告诉你脚本是否正在执行。 我开始怀疑你的脚本正在执行,但是由于某种原因,计算机的SYSTEM上下文无法访问你试图执行的EXE。
由于脚本执行时不会login,所以login时不会有相同的环境。%variables可能不起作用等。确保所有path都是本地完整path,因为它赢了埃文提到,由于它在计算机帐户下运行,无法访问networking资源。
如果你只在一台机器上运行它,可以考虑使用计划任务,而不是GPO,它有更好的日志loggingfunction,你可以把它作为你select的用户帐户来运行。 您甚至可以使用组策略首选项将计划任务(和.cmd本身)通过GPO推送到计算机。