我正在使用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 }}"