join域时运行脚本

我有一个Microsoft域(主要是2008r2 \ 7)。
我正在寻找一种在join域(不需要用户login)后立即运行脚本的方法,至此我失败了。

另外,我希望它只运行一次,所以安排重复的任务不是一个选项。
让我感到很浪费,一遍又一遍。

我已经用启动脚本尝试了一个GPO,但是当计算机收到GPO后,启动后就是这样了。
我也尝试了一个计划任务(使用不同的触发器)的GPO,但他们也没有工作:
“启动时”触发器与启动脚本失败相同。
“在任务创build”失败,我猜是因为它不是通常的方式创build。
“按计划”是不相关的,因为我需要在join后立即运行(并设置一个已经通过的date没有工作)。
找不到任何相关的registry项,但我认为他们会遇到与GPO启动脚本相同的问题。

我唯一需要做的就是将任务附加到DC上的相关事件,并远程运行脚本。

有更好的build议吗?

– 编辑 –
由答案(这是伟大的,但不完全削减),我有几点补充:
1.这个问题适用于两台服务器(2008r2 \ 2012 \ 2012r2),尽pipe我只在2012r2上testing过。
2.我正在寻找更加类似runonce的解决scheme,这意味着我不希望它在无法满足条件的情况下运行。
3.我们使用镜像来部署服务器和工作站,但是我不能使用包含编辑的解决scheme,因为a)每当我需要更改脚本中的某些内容时,需要更新它们。
4.我们不使用join的脚本(我们根本不需要一个…),所以开始使用一个似乎对我来说是一种浪费。 此外,还有一些问题(例如,我应该把它放在图像中的哪个位置?在共享的位置?BYODs会怎样?将会使点3失效)。

谢谢。

将自定义registry项添加到您的构build图像,只是一个简单的“1”值的地方。
添加一个计划的任务,检查生成映像的registry项值,在此registry项中添加对您的域名的检查

HKLM \系统\ CurrentControlSet \服务\ TCPIP \参数

如果发现两者都运行您的脚本,则在完成时将自定义registry项更改为0。 有这个任务在启动时运行。

你可以按原样离开这个任务,或者有一个gpo删除计划的任务。 但是,如果将其保留在原位,并且需要重新运行脚本,则可以将registry项重新更改为1并重新启动。

轻微的安全问题是计划任务将需要作为本地pipe理员帐户运行。

join域后,你不需要重新启动吗? 如果您创build了启动脚本,则在重新启动之后,它将在加载其他组策略对象时立即应用。

你现在怎么join这个域名? 您也可以将您的域名join您的脚本。 使用Powershell,可以使用Add-Computer完成,从命令行可以使用netdom。

如果您使用的是configurationpipe理工具,通常您可以将其集成到您的任务序列中。

如何执行连接? 手动GUI交互或通过脚本? 如果是脚本,请在连接脚本中添加一行,让第二个脚本通过RunOnceregistry项运行。

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977%28v=vs.85%29.aspx

— BEGIN EDIT —
卫生署! 对

思考你对GPO的评论应用被延迟…我主要在同步GPO处理的服务器操作系统上工作。 工作站做asynchronous。 试试这个来获得asynchronous:

在您的构build过程/图像尝试禁用“快速login优化” https://technet.microsoft.com/en-us/magazine/gg486839.aspx
计算机configuration\pipe理模板\系统\login
在计算机启动时始终等待networking,并login=启用

创build一个GPO启动脚本GPO:
计算机configuration/策略/ Windows设置/脚本/启动

在你定义的脚本里面,使用下面的代码:

$built = gwmi Win32_OperatingSystem | foreach {[System.Management.ManagementDateTimeconverter]::ToDateTime($_.InstallDate)} if ($built -gt (get-date).addHours(-4)) { "do something" }