Как сравнить Last.Write.Time с помощью Powershell

Я хотел написать сценарий, который объединит файлы в один, ЕСЛИ они были изменены позже, чем тот, который должен быть местом назначения. Мой сценарий выглядит так:

Function UnifyConfigs { param ( $destination = "C:\temp\all.txt", [Parameter()] $files )

foreach ($config in $files) {
    If((Get-ChildItem $config ).LastWriteTime -gt (Get-Item $destination).LastWriteTime)
    {
        Clear-Content -path $destination
        Set-Content -path $destination -value (Get-Content $config) 
    }
    else {
        break
    }  
}
}

Моя основная проблема заключается в том, что файл $ destination изменяется ВСЕГДА. Насколько я понимаю, его следует менять только в том случае, если дата изменения $ config больше, чем дата изменения $ destination. Но теперь он перезаписывается каждый раз, когда я запускаю скрипт. Что случилось?

1 ответ

Решение

$destination как определено в вашем paramblock - это строка - вам нужно разрешить соответствующий элемент в провайдере файловой системы, чтобы перейти кLastWriteTime значение - здесь с использованием Get-Item:

if((Get-Item $config).LastWriteTime -gt (Get-Item $destination).LastWriteTime)
{
    # ...
}
Другие вопросы по тегам