Проверьте папку для новых файлов в Powershell - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу проверить папку на наличие новых файлов за последние 24 часа.Я написал этот маленький сценарий, но он не очень хорошо работает.

$folder = 'C:\Users\XMAN\Desktop\Unfug\'
$filter = '*'
$date = (Get-Date).addDays(-1)
     if (Get-ChildItem -Path $folder -Recurse -Force | ForEach-Object { $_.FullName}| Where-Object {$_.lastwritetime} -gt $date){
        Write-Host $._FullName -fore green
    }else{
        Write-Host "I have nothing to do."
    } 

Я знаю, у вас есть идеи.: D

Гразиас!

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Эта строка является вашей проблемой:

if (Get-ChildItem -Path $folder -Recurse -Force | ForEach-Object { $_.FullName} |...)

Эта строка возвращает только пути к файлам и отправляет список строк по конвейеру.Итак, вы взяли объект, захватили одно свойство (полное имя), затем передали его в where-object и проверили на наличие ModifiedDate, которого больше не существует.

Скорее всего, вы хотите, чтобы что-то подобное выполняло:

$folder = 'C:\ps-files\ClaimRedrop'
$filter = '*'
$date = (Get-Date).addDays(-1)
#Check if files exist outside of if statement. This is better for readability
$FileCheck = Get-ChildItem -Path $folder -Recurse -Force | 
    Where-Object {$_.lastwritetime -gt $date}

if ($FileCheck){
    # Avoid using Write-Host where possible. Whenever possible write to output or default
    $FileCheck | ForEach-Object {Write-Output $._FullName}
}
else{
    Write-Output "I have nothing to do."
} 
0 голосов
/ 27 сентября 2018

Порядок вашего конвейера неправильный:

$newFiles = Get-ChildItem -Path $folder -Recurse -Force -File |
    Where-Object CreationTime -gt $date |
    Select-Object -ExpandProperty FullName

if ($newFiles)
{
    foreach ($file in $newFiles)
    {
        Write-Host $file -ForegroundColor Green
        ...

Вы удалили свойство из своего объекта перед фильтрацией по нему.Кроме того, вы фильтруете по LastWriteTime, что не будет точным, если вы ищете новые файлы, поэтому я фильтрую по CreationTime в своем ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...