2016-09-02 4 views
0

Я пытаюсь составить скрипт/один вкладыш, в котором будут найдены файлы, которые были изменены более 10 часов назад в определенной папке, и если их нет файлы мне нужно, чтобы напечатать какое-то значение или строку.Файл сценария PowerShell изменить время> 10h и вернуть значение, если ничего не найдено

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

С этим один лайнером я получаю желаемый результат, когда есть файлы с изменения времени, в течение 10 часов, но я также нужен напечатать значение/строку, если не никаких результатов, так что я могу контролируйте его должным образом. Причиной этого является использование сценария/одного лайнера для целей мониторинга.

ответ

1

Этим командлетом Get-ChildItem и где у вас есть значение, возвращающее значение 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" 
} 
+0

Спасибо, брат! Казалось, что это трюк, и меня интересует только экранное чтение, так как платформа мониторинга ищет, если там какая-то строка или нет. – knob