是否可以设置计划任务在 Windows 更新之前和之后直接运行?

是否可以设置计划任务在 Windows 更新之前和之后直接运行?

我们目前正在尝试寻找一种解决方案,以便更好地自动化 IIS 机器上的 Windows 更新。我们的基础设施全天 24 小时都会受到数千次交易的影响;我们可以提供的最佳窗口是交易较少的窗口,但在交易期间关闭 IIS/关闭机器会导致我们希望避免的跨部门事件。

因此,这些事务必须在重新启动机器以接受更新之前完成。我们目前使用 F5 负载平衡器,它监控一个文件,该文件的控制值由我们手动更改以允许更新;如果服务器不再位于负载平衡表中,则正在进行的事务可以完成,其余的新事务将发送到其他服务器。

我正在尝试找到一种方法,让我们能够从负载平衡器中删除我们的服务器,而无需关闭它或关闭 IIS(允许待处理事务的宽限期,同时停止新的事务)。我们目前使用 SCOM,我无法访问其控件,并且团队告诉我,使用我们当前的基础架构无法在更新之前指定脚本或触发器。

我的想法是,我们可以配置一个计划任务脚本,在 Windows 更新准备安装的事件 ID 上触发,将我们的服务器从负载平衡中移除,然后在更新完成后再触发另一个脚本将其放回原位。

但是,虽然我知道计划任务在事件 ID 19(更新成功)上起作用,但我不确定是否有可能在更新实际开始之前指定要执行的任务。我目前正在查看的事件 ID 是 43,安装已开始,但我怀疑在此过程中是否可以运行其他任务(例如停止和启动服务、更改文件等)。

是否有人有在应用更新之前和之后围绕此特定事件链编写计划任务或脚本的经验?

答案1

好问题!

您打算如何修补 IIS 服务器?您使用什么工具?WSUS?SCCM?BigFix?Altiris?还是其他?

SCOM 的方式 - 可以在特定事件 ID 上触发脚本。 SCOM - 运行脚本以响应事件检测

SCOM 脚本模板

您需要定义一个服务窗口来实现流程自动化。

假设您计划使用 4 小时的服务窗口(下午 6 点到晚上 10 点)来修补 IIS 服务器,每天一台服务器。

  1. 从负载均衡器中删除服务器 您可以使用 PHP/Perl/Python/iRule 删除服务器,无需人工干预。

F5 负载均衡器编程

  1. 允许交易完成的宽限期。在这里,您可以使用一些 IIS 特定脚本来监控会话

  2. 针对补丁管理的服务器并监控更新下载、安装和完成事件 ID

  3. 将服务器添加回 F5 负载均衡器

常用工具:Windows Powershell(因为我们讨论的是 IIS,所以 Powershell 是最好的选择)

在 Powershell 的帮助下:

  1. 您可以调用 PHP 函数/URL 来从 F5 负载均衡器中添加和删除服务器。

通过 Windows Powershell 运行 PHP 脚本

  1. 监控 IIS 和数据库(如果需要)

  2. 它可以监视更新安装的事件 ID 并最终重新启动服务器。

您可以使用 Windows Powershell 安排作业。

希望这有帮助。这只是一个例子。

相关内容