EBa*_*arr 28 powershell get-childitem
我对这似乎是一个简单的问题感到难过; 很抱歉这里有任何骨头的问题.
我有脚本清理已解散的备份文件.在识别出我循环的文件并打印出被转储的内容之后.我的问题出现了尝试在零失效文件时提供反馈/测试.脚本看起来像......
$Files = Get-ChildItem $BackupPath_Root -include *.bak -recurse
| where {$_.CreationTime -le $DelDate_Backup }
if ( $Files -eq "" -or $Files.Count -eq 0 ) {
write-host " no files to delete." #<-- this doesn't print when no files
} else {
foreach ($File in $Files) {
write-host “$File”
Remove-Item $File | out-null
}
}
Run Code Online (Sandbox Code Playgroud)
if检查没有文件没有捕获无文件条件.测试$Files没有结果的适当方法是什么?
ste*_*tej 49
尝试包装@(..).它始终创建一个数组:
$Files = @(Get-ChildItem $BackupPath_Root -include *.bak -recurse
| where {$_.CreationTime -le $DelDate_Backup })
if ($Files.length -eq 0) {
write-host " no files to delete."
} else {
..
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*evy 13
当没有文件时,$ Files等于$ null,因此EBGreen建议你应该测试$ null.此外,$ Files.Count仅在结果是文件集合时才有用.如果结果是标量(一个对象),则它将没有count属性,并且比较失败.
性能提示:当您只需要搜索一种扩展类型时,请使用-Filter参数(而不是-Include),因为它在提供者级别上进行过滤.