首页 > 解决方案 > Remove-Item 有时并不总是删除所有内容

问题描述

我在 PowerShell 中创建了一个函数,大部分工作正常,但有时它没有,该函数应该删除一些包含文件的文件夹,其中一些可能有超过 20 万个文件,我得到的错误是“文件夹不为空”。哪个是对的。该文件夹中的某些内容也需要删除。但我无法理解的是为什么有时它会删除所有内容,有时不会。

当我运行脚本并对其进行测试时,我正在使用 VMware 进行测试。在脚本完成并且没有错误并且所有内容都已删除后,我正在将 VM 从快照恢复到以前的状态,然后再次运行脚本,结果是它可能会无缘无故地失败。

当我说失败时,我的意思是它可能会留下一个空文件夹,里面没有文件。

function Delete {
    if (Test-Path $($args[0])) {
        Write-Host -ForegroundColor Yellow "Deleting $args"

        Get-ChildItem -Path $args -Recurse -Force | Where-Object {
            -not ($_.PSIsContainer)
        } | Remove-Item -Force
        Remove-Item $args -Recurse -Force
    } else {
        Write-Host -ForegroundColor Red "$args  Does not exist"
    }
}

Delete "C:\Backup1"
Delete "C:\Backup2"

标签: powershellpowershell-3.0

解决方案


推荐阅读