You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell获取Windows服务的恢复选项?

更优雅地在PowerShell中获取服务恢复选项

嘿,针对你的需求,确实有比解析sc qfailure输出或者手动啃注册表二进制值更靠谱的方法——直接用PowerShell的CIM(Common Information Model)模块来获取结构化的服务恢复配置数据,完全不用自己处理繁琐的格式转换。

方法1:使用Win32_ServiceRecoveryConfiguration CIM类

这个WMI/CIM类专门用于查询和配置服务的恢复选项,返回的是结构化对象,方便你直接提取所需信息,不用做字符串解析。

示例代码:

# 替换成你要查询的服务名称
$serviceName = "Spooler"
$recoveryConfig = Get-CimInstance -ClassName Win32_ServiceRecoveryConfiguration -Filter "ServiceName='$serviceName'"

# 查看完整配置
$recoveryConfig

# 提取关键信息,比如恢复动作
$recoveryConfig.RecoveryActions | ForEach-Object {
    [PSCustomObject]@{
        ActionType = switch ($_.Type) {
            0 { "无操作" }
            1 { "重启服务" }
            2 { "重启计算机" }
            3 { "运行命令" }
        }
        DelayInSeconds = $_.Delay / 1000
    }
}

这个类返回的核心属性包括:

  • ResetPeriod:恢复动作重置的时间周期(单位:秒)
  • RebootMessage:重启计算机时显示的提示消息
  • CommandLine:执行"运行命令"类型恢复动作时的命令行内容
  • RecoveryActions:包含3组恢复动作的数组,每组有Type(动作类型)和Delay(延迟毫秒数)两个字段

为什么这比sc.exe或注册表更好?

  • 结构化数据更易用:返回的是PowerShell原生对象,你可以直接筛选、排序、导出,不用写复杂的正则表达式去解析sc qfailure的文本输出
  • 接口更稳定:CIM/WMI是微软官方支持的系统管理接口,不会像sc.exe的输出格式那样随系统版本变化
  • 避免注册表解析坑:注册表中的FailureActions是二进制值,格式为[版本(4字节)][重置周期(4字节)][3组动作(每组8字节:类型4字节+延迟4字节)],手动解析很容易出错,而CIM已经帮你处理好了这些底层细节

如果你后续需要修改恢复选项,也可以用Set-CimInstance直接修改这个类的属性,比手动改注册表或者用sc failure命令更直观。

内容的提问来源于stack exchange,提问作者Andeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:37:02