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

如何通过Ansible获取Windows服务列表及其运行状态?

问题解决:使用win_service_info获取运行中Windows服务的名称与状态

问题分析

你的Playbook存在两个核心问题:

  1. 列表拼接语法错误:set_fact中service_names: "{{ service_names }}" + {{ item }}的写法不符合Ansible列表操作规范,无法正确将服务名称添加到列表中。
  2. 未保留状态信息:仅提取了服务名称,没有同步获取状态字段,导致无法在debug中同时展示状态。

优化后的Playbook

无需手动循环拼接列表,直接通过json_query过滤出运行状态的服务,并同时提取名称和状态:

---
- name: Get Running Windows Services
  hosts: test
  gather_facts: yes

  tasks:
    - name: Get info for USRJOB* services
      ansible.windows.win_service_info:
        name: USRJOB*
      register: service_info

    - name: Filter running services with name and state
      set_fact:
        running_services: "{{ service_info.services | json_query('[?state == `running`].{name: name, state: state}') }}"

    - name: Print running services and their states
      debug:
        var: running_services

关键说明

  • 用json_query的[?state == running]直接筛选运行中的服务,通过{name: name, state: state}指定要保留的字段,一步生成包含名称和状态的结构化列表。
  • 避免了手动循环拼接的冗余操作,输出结果清晰展示每个服务的名称与对应状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:17:07