首页 > 解决方案 > Ansible - win_file 模块 - 如果文件正在使用,则强制删除

问题描述

我们使用 ansible win_file 模块删除 Windows Server 机器中的特定文件夹,代码如下:

- name: Delete <folderName> directory
  win_file: path=C:\<pathToFolder>\{{target_environment}}\<folderName> state=absent
  tags: <folderName>

问题:当 ansible 角色运行的同时该目录中的文件在另一个程序中打开时,它会失败说:

现在,我理解了这个错误,但我正在寻找强制删除的建议,即使文件正在使用中,或者如果有其他我不知道的模块无法解决这个问题。

(目前使用ansible 2.4.6)

标签: windowsansibledelete-file

解决方案


所以,经过一番搜索和挖掘,我想出了一个解决方案,我找到了一个类似的 ansible 模块,可以完成这项工作,win_shell

我用以下代码解决了这个问题:

  name: Delete <folderName> directory
  win_shell: Remove-Item –path <folderName> –recurse -force
  args:
    chdir: C:\<pathToFolder>\{{target_environment}}
    removes: C:\<pathToFolder>\{{target_environment}}\<folderName>
  tags: <folderName>
  • 删除:检查文件夹是否存在,否则跳过任务
  • 强制:做我想要的伎俩,删除文件夹和他的所有文件,即使某些文件正在使用或在任何程序中打开。

推荐阅读