【问题标题】:Powershell Error in deleting files and folders删除文件和文件夹时的Powershell错误
【发布时间】:2015-12-22 23:24:00
【问题描述】:

我有一个场景,powershell 脚本应该删除路径中的日志文件和日志文件夹,假设它们位于路径 C:\MLA\logs 下。

以下是我一直在使用的脚本,它完成了删除文件,但问题是该脚本无法删除文件夹,它显示的错误类似于找不到路径的一部分

C:\MLA\logs\ART_Daily。

下面是脚本

$root=C:\MLA\logs
$limit=(Get-Date).AddDays(-90)

get-childitem -Path $root -Recurse -force |
            where-Object {(($_.name -match 'Daily|ART|ABC|IIC') -or ($_.PSIsContainer -match 'Daily|ART|ABC|IIC')) -and ($_.CreationTime -lt $limit)} |Remove-Item -recurse -Force

$name 检查根路径中的文件(如果管道名称是任何文件的文件名的一部分)和 $.PSIsContainer 检查文件夹 9 f 管道名称是任何文件夹的文件夹名称的一部分)在参数化的根路径内。

你能帮帮我吗?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您需要为初学者更正过滤器:

    $_.name -match 'Daily|ART|ABC|IIC'
    

    将匹配具有该名称的文件文件夹。

    $_.PSIsContainer -match 'Daily|ART|ABC|IIC'
    

    什么也找不到,因为 PSIsContainer 属性是布尔值(它是不是容器:True/False?)。

    【讨论】:

    • $_.PSIsContainer -match 'Daily|ART|ABC|IIC' -eq $True 应该是这样的吗??
    • 查找文件:$_.PSIsContainer -eq $false 或文件夹$_.PSIsContainer -eq $true。当然,您不能以这种方式获取所有文件和文件夹:要么 / 要么。
    • 总的来说,您最好还是使用 Get-ChildItem 的 -filter-include-exclude 参数,因为它们将过滤交给更快的文件系统提供程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多