Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从services.msc停止windows服务时是否可能触发脚本执行?_Windows_Powershell_Batch File_Service_System - Fatal编程技术网

从services.msc停止windows服务时是否可能触发脚本执行?

从services.msc停止windows服务时是否可能触发脚本执行?,windows,powershell,batch-file,service,system,Windows,Powershell,Batch File,Service,System,我想知道,当我从services.msc停止服务时,是否可以将服务配置为调用批处理/powershell脚本 虽然在Linux中init.d服务是完全可编程的,甚至systemd服务也可以有额外的过程,但我还没有找到在Windows上实现这一点的方法 提前感谢您可以将服务配置为在出现故障时运行程序,但如果您通过services.msc停止服务,则这可能不会被视为故障 我能想到的唯一其他选项是设置一个作为计划任务运行的PowerShell脚本,该脚本定期检查服务运行状态,或者(为了更简单的选择)查

我想知道,当我从services.msc停止服务时,是否可以将服务配置为调用批处理/powershell脚本

虽然在Linux中init.d服务是完全可编程的,甚至systemd服务也可以有额外的过程,但我还没有找到在Windows上实现这一点的方法


提前感谢

您可以将服务配置为在出现故障时运行程序,但如果您通过services.msc停止服务,则这可能不会被视为故障

我能想到的唯一其他选项是设置一个作为计划任务运行的PowerShell脚本,该脚本定期检查服务运行状态,或者(为了更简单的选择)查看事件日志以查找指示服务已停止的事件(自上次检查脚本以来)然后执行您需要的任何操作

根据montonero的评论,您不需要定期运行计划任务,因为它可以配置为在事件本身发生时运行。这里描述了这一点:

使用事件查看器“将任务附加到此事件…”功能 创建任务

启动“事件查看器”并查找事件。找到后,右键单击事件并选择“将任务附加到” 这件事


如果您正在运行批处理文件或powershell脚本来停止服务,为什么不在停止后放置任何要运行的命令?请记住,服务停止的原因之一是系统正在关闭。那不是开始新活动的好时机。这项活动是“必须”在停止后完成的,还是可以重新制定为在启动期间完成的(当您希望有足够的时间时)?(当然,断电会“关闭”服务,运行额外代码的可能性为零)可以创建由特定事件触发的调度程序任务。只需在事件查看器中右键单击事件并选择“将任务附加到此事件”哦,真的,我不知道!那就更简单了:)。感谢您的回复,我无法创建由我的服务启动/停止触发的自定义事件。服务控制管理器为每个启动/停止创建一个通用系统事件,但对任何服务都是如此,我无法区分它们。请查看此相关答案,因为它显示了如何将事件的详细信息发送到PowerShell脚本,然后您可以使用它来区分:Event/System/Provider/@Name日志值(常规信息)有路径吗?它具有所调用的服务的名称以及其中的状态更改。那就行了