每当服务器重新启动/关闭(无论是正常重启还是可耻重启)时,我都需要运行一个 powershell 脚本。脚本会每隔1分钟停止4个应用服务,最后重启系统。(这是业务需求,不要问为什么)
每当启动重新启动或关闭时,如何使服务器调用 .ps1 脚本。
我的测试结果:我尝试创建一个测试脚本,该脚本将生成一个具有当前日期/时间的文本文件,并将其添加到触发事件日志 6006 的计划任务中(每当启动系统重新启动/关闭时都会创建。)我选中了框-“以最高权限运行”,但是在系统重新启动后,没有按预期生成文本文件,尽管它是在手动运行时生成的。
我们有更好的方法来实现这一点吗?
(我的最终期望应该是这样的——在随机的一天,一个随机用户在每月一次的补丁后启动重新启动,此时命令提示符窗口在他面前打开并显示如下消息:
Stopping service abc...
Stopped.
Waiting for 60 seconds.
Stopping service xyz...
Stopped
编辑:我已经成功地调用了 .ps1 文件,方法是按照 Kory 和 Alroc 的建议将其添加到 gpedit 中,但脚本仅在启动计算机重新启动时在后台运行。它不会打开常规的 cmd 窗口来显示进度。我还在下面添加 .ps1 脚本,该脚本以 10 秒的间隔停止 2 个服务(为测试目的而选择),并且仅在手动运行时才会显示计时器。当由 shutdown 命令调用时,它将停止仅在后台提供服务,而不向用户显示进度。请协助实现这一目标?
Write-Host "Shutdown script invoked"
stop-service W32Time -force -PassThru
for($i = 10 ; $i -gt 0 ; $i--)
{
Write-Progress -Activity "`n Waiting for" -status "`$i equals $i seconds"
sleep 1
}
stop-service wuauserv -force -PassThru