运行 启动服务器重启时的 powershell 脚本并在 cmd 中显示脚本进度
Run powershell script whenever a server reboot is initiated and show the script progress in cmd
只要服务器 rebooted/shutdown(无论是正常重启还是可耻重启),我都需要 运行 一个 powershell 脚本。
脚本会每隔1分钟停止4个应用服务,最后重启系统。(这是业务需求,不要问为什么)
如何让服务器在启动重启或关机时调用 .ps1 脚本。
我的测试结果:
我试图创建一个测试脚本,它将生成一个包含当前 date/time 的文本文件,并将其添加到事件日志 6006 触发器的计划任务中(每当启动系统 reboot/shutdown 时创建。)
我选中了框 -"Run with highest privileges" 但是在系统重新启动后没有生成文本文件,尽管它是在 运行 手动生成的。
我们有没有更好的方法来实现这个?
(我的最终期望应该是这样的——
在 运行dom 的一天,当命令提示符 window 在他面前打开并显示如下消息时,运行dom 用户在每月补丁后启动重启:
Stopping service abc...
Stopped.
Waiting for 60 seconds.
Stopping service xyz...
Stopped
编辑:我已经按照 Kory 和 Alroc 的建议将 .ps1 文件添加到 gpedit 中,但脚本 运行s 仅在启动计算机重新启动时在后台运行。它不会打开常规 cmd window 来显示进度。
我在下面添加了 .ps1 脚本,它以 10 秒的间隔停止 2 个服务(选择用于测试目的),并且也会显示计时器,仅当 运行 manually.When 由 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
您可以使用GPO为系统配置关机脚本。
您也可以通过 Win32_ComputerShutdownEvent 观察者访问它。
经过深入挖掘,我终于想出了如何在系统关闭过程中使 cmd window 可见。
执行上述期望的完整步骤如下:
- 打开gpedit.msc
- 导航至计算机配置->Windows
设置->脚本(Startup/Shutdown)->关机。
- 转到关机属性。在 powershell scripts 选项卡中添加您的
脚本和 select '运行 Windows Powershell 脚本优先'
以上步骤将在每次系统关闭时启用脚本调用。现在让脚本可见并显示进度:
- 导航至计算机配置->管理
模板->系统->脚本
在右侧窗格中显示的策略中启用以下
属性:
- 运行 Windows Powershell 脚本首先在计算机启动时关闭
- 运行 关闭脚本可见
只要服务器 rebooted/shutdown(无论是正常重启还是可耻重启),我都需要 运行 一个 powershell 脚本。 脚本会每隔1分钟停止4个应用服务,最后重启系统。(这是业务需求,不要问为什么)
如何让服务器在启动重启或关机时调用 .ps1 脚本。
我的测试结果: 我试图创建一个测试脚本,它将生成一个包含当前 date/time 的文本文件,并将其添加到事件日志 6006 触发器的计划任务中(每当启动系统 reboot/shutdown 时创建。) 我选中了框 -"Run with highest privileges" 但是在系统重新启动后没有生成文本文件,尽管它是在 运行 手动生成的。
我们有没有更好的方法来实现这个?
(我的最终期望应该是这样的—— 在 运行dom 的一天,当命令提示符 window 在他面前打开并显示如下消息时,运行dom 用户在每月补丁后启动重启:
Stopping service abc...
Stopped.
Waiting for 60 seconds.
Stopping service xyz...
Stopped
编辑:我已经按照 Kory 和 Alroc 的建议将 .ps1 文件添加到 gpedit 中,但脚本 运行s 仅在启动计算机重新启动时在后台运行。它不会打开常规 cmd window 来显示进度。 我在下面添加了 .ps1 脚本,它以 10 秒的间隔停止 2 个服务(选择用于测试目的),并且也会显示计时器,仅当 运行 manually.When 由 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
您可以使用GPO为系统配置关机脚本。
您也可以通过 Win32_ComputerShutdownEvent 观察者访问它。
经过深入挖掘,我终于想出了如何在系统关闭过程中使 cmd window 可见。
执行上述期望的完整步骤如下:
- 打开gpedit.msc
- 导航至计算机配置->Windows 设置->脚本(Startup/Shutdown)->关机。
- 转到关机属性。在 powershell scripts 选项卡中添加您的 脚本和 select '运行 Windows Powershell 脚本优先'
以上步骤将在每次系统关闭时启用脚本调用。现在让脚本可见并显示进度:
- 导航至计算机配置->管理 模板->系统->脚本
在右侧窗格中显示的策略中启用以下 属性:
- 运行 Windows Powershell 脚本首先在计算机启动时关闭
- 运行 关闭脚本可见