((已解决)通过Powershell和Ansible 2.4评估Windows机器中的可用磁盘空间

问题描述 投票:0回答:1

我正在尝试编写一个Ansible任务,该任务执行Powershell命令来检索Windows 7 Remote计算机上C驱动器的磁盘可用空间,然后将其输出到printscreen。我未能提取必要的信息。

[我尝试通过rawcsize的元素将rawcsize.stdout [0]替换为rawcsize.stdout [1]或rawcsize.stdout [2]

剧本的编写方法如下:

  - name: Retrieve Disk Usage
    win_shell: 'Get-PSDrive C | Select-Object Free'
    register: rawcsize

#  # Convert disk size in Gigabytes
  - name: Convert system disk into various formats and export
    vars:
      disk_out_free: '{{ rawcsize.stdout[0] }}'
      disk_int: '{{ rawcsize.stdout | int }}'
      disk_gb: '{{ disk_int | int}}'
    debug:
      msg: 'rawcsize.stdout: {{(rawcsize.stdout)}} disk_out_free: {{(disk_out_free)}}  disk_int: {{(disk_int)}} disk_gb: {{(disk_gb)}}'

输出如下:

确定:[192.168.122.3] => {}

MSG:

rawcsize.stdout:自由----35229712384

disk_int:0 disk_gb:0

因此变量“ disk_out_free”不可见。为什么会这样呢?以及如何从Powershell输出中仅提取必要的信息?谢谢

windows ansible
1个回答
1
投票

使用ConvertTo-Json cmdlet,可以从PowerShell中输出json,然后使用from_json Jinja2过滤器将其读入。

- name: get disk free space
  win_shell: Get-PsDrive c | ConvertTo-Json
  register: output

- name: extract free space
  set_fact:
    free_json: "{{ output.stdout|from_json}}"

- name:
  debug:
    var: free_json.Free

产品:

TASK [Gathering Facts] **************************************************************************************
ok: [host.example.com]

TASK [get disk free space] **************************************************************************************
changed: [host.example.com]

TASK [extract free space] **************************************************************************************
ok: [host.example.com]

TASK [debug] **************************************************************************************
ok: [host.example.com] => {
    "free_json.Free": "18444869632"
}

PLAY RECAP *************************************************************************************
host.example.com : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
© www.soinside.com 2019 - 2024. All rights reserved.