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

如何通过Ansible获取Windows所有服务信息?Win_Service需指定name参数

获取Windows系统所有服务列表的Ansible方案

当然有办法啦!虽然win_service模块确实需要指定服务名才能查询单条服务的信息,但我们可以通过其他方式轻松获取Windows系统的所有服务列表,下面给你两种实用的方案:

方案1:用win_shell调用PowerShell命令

PowerShell自带的Get-Service cmdlet可以直接列出系统中所有服务,搭配Ansible的win_shell模块就能完美实现需求,还能把结果注册成变量方便后续处理。

示例Playbook:

- name: 拉取Windows所有服务列表
  hosts: windows
  tasks:
    - name: 执行PowerShell命令获取服务详情
      win_shell: Get-Service | Select-Object Name, DisplayName, Status, StartType
      register: all_services

    - name: 打印所有服务信息
      debug:
        var: all_services.stdout_lines

如果需要更全面的服务属性(比如是否可停止、服务描述等),可以去掉Select-Object部分,直接执行Get-Service;要是想拿到结构化数据方便后续解析,还可以转换成JSON格式:

win_shell: Get-Service | Select-Object Name, DisplayName, Status, StartType, CanStop | ConvertTo-Json

方案2:用win_command调用系统sc命令

Windows自带的sc命令也支持查询全量服务,通过sc query type= service state= all就能列出所有状态的服务(运行中、停止、暂停等)。

示例Playbook:

- name: 拉取Windows所有服务列表
  hosts: windows
  tasks:
    - name: 执行sc命令获取所有服务
      win_command: sc query type= service state= all
      register: all_services

    - name: 打印所有服务信息
      debug:
        var: all_services.stdout_lines

⚠️ 注意:这里type=和state=后面的空格不能省略,这是sc命令的语法要求,少了空格会导致命令执行失败。

内容的提问来源于stack exchange,提问作者Been A Long While

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:02:29