如何使用Ansible删除回收站中的内容

时间:2019-03-22 21:12:32

标签: powershell recycle-bin ansible-awx

我正在针对Windows VM运行一本操作手册,以删除回收站中的内容,并且该任务成功运行,表明已进行更改。 但是,当查看服务器本身时,回收站中的内容仍然保留。

有几种方法可以删除回收站中的内容。 这是我尝试过的以下方法:

使用了不同的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:\驱动器有关的内容,除非我指定驱动器号。

所有这些命令在服务器本身上运行时都会成功删除回收站中的内容,但是使用Ansible时,回收站中的内容将保留。

1 个答案:

答案 0 :(得分:0)

因此,我意识到运行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 }}"