Как сравнить 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
как определено в вашем param
block - это строка - вам нужно разрешить соответствующий элемент в провайдере файловой системы, чтобы перейти кLastWriteTime
значение - здесь с использованием Get-Item
:
if((Get-Item $config).LastWriteTime -gt (Get-Item $destination).LastWriteTime)
{
# ...
}