我正在尝试编写一个脚本/一个内核,它会找到在10个小时前在特定文件夹中修改过的文件,如果没有文件,我需要它来打印一些值或字符串。
Get-ChildItem -Path C:\blaa\*.* | where {$_.Lastwritetime -lt (date).addhours(-10)}) | Format-table Name,LastWriteTime -HideTableHeaders"
使用那个衬里,当有文件时,我得到想要的结果 修改时间超过10个小时,但我还需要它打印值/字符串,如果有的话 没有结果,所以我可以正确监控它。 这样做的原因是利用脚本/单行内容进行监控。
答案 0 :(得分:1)
如果找不到任何内容,那么cmdlet Get-ChildItem
和where子句将返回null。你必须分别考虑到这一点。 I would also caution the use of Format-Table
for output unless您只是将它用于屏幕阅读。如果你想要一个“单线”,你就可以这样做。如果您愿意,所有PowerShell代码都可以是单行代码。
$results = Get-ChildItem -Path C:\blaa\*.* | where {$_.Lastwritetime -lt (date).addhours(-10)} | Select Name,LastWriteTime; if($results){$results}else{"No files found matching criteria"}
你的代码中有一个附加的括号,可能是一个复制工件,我不得不删除。正确编码看起来像这样
$results = Get-ChildItem -Path "C:\blaa\*.*" |
Where-Object {$_.Lastwritetime -lt (date).addhours(-10)} |
Select Name,LastWriteTime
if($results){
$results
}else{
"No files found matching criteria"
}