我正在针对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时,回收站中的内容将保留。
答案 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 }}"