【问题标题】:How to skip a folder and its sub-folder and files from getting deleted using PowerShell?如何跳过使用 PowerShell 删除的文件夹及其子文件夹和文件?
【发布时间】:2022-02-15 23:21:41
【问题描述】:

我有一个 PS 脚本,它可以从超过 15 天的特定路径中删除文件夹和文件。 我想排除“_tasks”文件夹及其内容被删除,但脚本会删除其中的文件和文件夹,即使我提供了 -Exclude 属性来排除 _tasks 文件夹及其内容。

下面是我正在使用的脚本。

如何排除 _tasks 文件夹及其子文件夹和文件被删除?

Get-ChildItem –Path "F:\Suraj\Garbage" -Recurse -Exclude "__tasks" | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-15))} | Remove-Item -Force -Recurse

下图显示左侧的文件已在 _tasks 文件夹中被删除。我不希望它们被删除。任何相同的建议都会有所帮助。

【问题讨论】:

    标签: powershell powershell-5.1 exclude


    【解决方案1】:

    这段代码选择除了文件夹_task及其子文件夹之外的所有文件..

    Get-ChildItem -Path 'F:\Suraj\Garbage' -Recurse  | 
    Select-Object  LastWriteTime -ExpandProperty FullName |
    Where-Object { ($_ -notlike 'F:\Suraj\Garbage\_tasks*') -and ($_.LastWriteTime -lt (Get-Date).AddDays(-15))} |
    Remove-Item -Force -Recurse
    

    或者像 Theo 建议的那样更好:

    Get-ChildItem -Path 'F:\Suraj\Garbage' -Recurse  | 
    Where-Object { ($_.FullName -notlike 'F:\Suraj\Garbage\_tasks*') -and ($_.LastWriteTime -lt (Get-Date).AddDays(-15))} |
    Remove-Item -Force -Recurse
    

    【讨论】:

    • 法语,谢谢您的回复。尝试了您的代码,是的,它没有删除 _Tasks 文件夹的内容,但是,它正在删除存在于 _tasks 文件夹所在的同一路径中的其他文件夹和文件,即使它们不超过 15 天。现在如何避免这个问题?
    • 最好一起删除Select-Object 行并将Where-Object 行更改为Where-Object { ($_.FullName -notlike 'F:\Suraj\Garbage\_tasks*') -and ($_.LastWriteTime -lt (Get-Date).AddDays(-15).Date)} | ...。通过使用Select-Object -ExpandProperty FullName,您将失去其他属性,例如LastWriteTime
    • 它只是粘贴错误,在选择对象中添加 LastWriteTime 看我编辑的答案
    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 2017-10-30
    • 2019-02-16
    • 2012-07-21
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多