问题描述
因此创建了一个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
}