Get-childitem无法与foreach循环一起使用

问题描述

尝试从多个路径删除文件

因此创建了一个csv文件,例如path,days,filter

将此文件导入shell并遍历每个对象以删除内容,但是getchilditem一次又一次失败, 无法理解其背后的原因,

下面是想要实现的代码

Start-Transcript -Path "D:\delete.log"

$pathlist= Import-csv -LiteralPath "D:\diskpath.csv"
$count = 0

foreach($p in $pathlist){

    Write-host $p.path " | " $p.days -ForegroundColor DarkCyan
    $path = $p.path
    $days = $p.days
    $filter = $p.filter

    Get-ChildItem -Path $path -Filter $filter | where-object{$_.LastWriteTime -lt [datetime]::Now.AddDays(-$days)}|Remove-Item -Force -Verbose -Recurse -ErrorAction SilentlyContinue -Confirm $false
    
}


Stop-Transcript

没有for循环,脚本可以正确执行,但是有了for循环,脚本就会失败

请告知该查询是否需要其他信息, 愿意提供相同的, 已经在Google搜索并在此处阅读了多个问题,但无法找到失败的原因,

解决方法

@ T-Me和@Theo

感谢高亮显示错误,我没有在脚本中看到类型错误,尽管在PowerShell中手动键入虽然编写正确,但是在脚本中却犯了错误,但现在可以正常工作了-

Start-Transcript -Path "D:\delete.log"

$pathlist= Import-csv -LiteralPath "D:\diskpath.csv"
$count = 0

foreach($p in $pathlist){

    Write-host $p.path " | " $p.days -ForegroundColor DarkCyan
    $path = $p.path
    $days = $p.days
    $filter = $p.filter

    Get-ChildItem -Path $path -Filter $filter | where-object{$_.LastWriteTime -lt [datetime]::Now.AddDays(-$days)}|Remove-Item -Force -Verbose -Recurse
    
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...