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



我正在使用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: Drive有关的内容,除非我指定驱动器。

所有这些命令在服务器本身上运行时成功删除了回收箱的内容,但是当使用Ansible时,Recycle Bin的内容仍保留。

所以我意识到运行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 }}"

相关内容

  • 没有找到相关文章

最新更新