Извлечение единственной переменной из Powershell - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь написать задачу Ansible, которая выполняет команду Powershell, чтобы получить свободное место на диске диска C на удаленной машине с Windows 7, а затем выполнить простой вывод на экран печати. Мне не удается извлечь необходимую информацию.

Я пытался пройти элемент 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)}}'

Вывод следующий:

ok: [192.168.122.3] => {}

MSG:

rawcsize.stdout: Свободно ---- 35229712384

disk_int: 0 disk_gb: 0

Таким образом, переменная "disk_out_free" не видна. Почему это происходит ? И как я могу извлечь только необходимую информацию из вывода Powershell? Спасибо

1 Ответ

0 голосов
/ 19 октября 2019

Используя командлет ConvertTo-Json, вы можете вывести json из PowerShell, а затем использовать фильтр 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...