Как удалить содержимое в Корзине с помощью Ansible - PullRequest
0 голосов
/ 23 марта 2019

Я запускаю playbook против виртуальной машины Windows, чтобы удалить содержимое корзины, и задача успешно выполняется, показывая, что изменение было внесено.Однако при просмотре самого сервера содержимое корзины все равно остается.

Существует несколько способов удалить содержимое корзины.Вот следующие методы, которые я пробовал:

Различные используемые книги воспроизведения Ansible:

- name: Clean recycle bin
  win_shell: |
    $recycleBin = (New-Object -ComObject Shell.Application).NameSpace(0xa)
    $recycleBin.Items() | ForEach-Object -Process { Remove-Item -Path $_.Path -Force -Recurse }

- name: Clean recycle bin
  win_shell: Clear-RecycleBin -Force

- name: Clean recycle bin
  win_command: cmd.exe /k rd /s /q %systemdrive%\$Recycle.Bin

Используя команды powershell, он удалит все без запроса подтверждения.Я бы предпочел не запускать команду cmd.exe, поскольку она удаляет только содержимое, относящееся к диску C: \, если только я не указываю букву диска.

Все эти команды успешно удаляют содержимое корзиныbin при запуске на самом сервере, но при использовании Ansible содержимое корзины остается.

1 Ответ

0 голосов
/ 25 марта 2019

Итак, я понял, что при запуске команд powershell удаляется только содержимое корзины для этого конкретного пользователя, а не всех пользователей.

Я решил собрать буквы дисков с помощью команды powershell, так как не сделал этого.получить все буквы диска, используя win_disks_facts.Затем я перебираю буквы дисков и запускаю команду cmd.exe, которая очищает корзину для всех пользователей.

- name: Get disk drives
  win_shell: |
    $driveinfo = Get-WmiObject -Class Win32_logicaldisk | where {$_.drivetype -eq 3} | select DeviceID
    $driveinfo.DeviceID
- name: Clean recycle bin
  win_command: cmd.exe /k rd /s /q {{ item }}\$Recycle.Bin
  with_items:
    - "{{ disk_drives.stdout_lines }}"
...