PowerShell脚本文件修改时间> 10h,如果找不到任何内容则返回值

时间:2016-09-02 12:04:49

标签: powershell zabbix

我正在尝试编写一个脚本/一个内核,它会找到在10个小时前在特定文件夹中修改过的文件,如果没有文件,我需要它来打印一些值或字符串。

Get-ChildItem -Path C:\blaa\*.* | where {$_.Lastwritetime -lt (date).addhours(-10)}) | Format-table Name,LastWriteTime -HideTableHeaders"

使用那个衬里,当有文件时,我得到想要的结果 修改时间超过10个小时,但我还需要它打印值/字符串,如果有的话 没有结果,所以我可以正确监控它。 这样做的原因是利用脚本/单行内容进行监控。

1 个答案:

答案 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"
}