У меня есть ряд папок на сервере, которые необходимо регулярно проверять на правильность резервного копирования. Нам нравится иметь по крайней мере 1 резервную копию в этой папке, возраст которой не менее 7 дней. Резервные копии в формате .zip.

Я хочу видеть каталоги, которые не содержат zip-файлов, которые были изменены или созданы за последние 7 дней.

Вот пример того, как выглядит структура файла:

\\server01\backups\PLANT1\A
\\server01\backups\PLANT1\B
\\server01\backups\PLANT2\A
\\server01\backups\PLANT2\B
...etc

Мне удалось собрать сценарий powershell, который возвращает весь каталог zip-файлов, и другой, в котором перечислены те, которые были изменены за последние 7 дней, но не тот, который возвращает только каталоги тех, у которых нет необходимых нам файлов. ,

Вот тот сценарий, который я только что упомянул:

$DateToCompare = (Get-date).AddDays(-7)
Get-ChildItem \\server01\backups -recurse -include *.zip | Where {(!$_.PsIsContainer) -and ($_.lastwritetime -gt $DateToCompare)} | select DirectoryName,Name,LastWriteTime | sort DirectoryName

Ваше руководство высоко ценится.

Редактировать:

Вот код в окончательном виде. Я был очень близок

$DateToCompare = (Get-Date).AddDays(-7)
Get-ChildItem \\server01\backups -recurse -include *.zip | Where {(!$_.PsIsContainer) -Notcontains ($_.creationtime -gt $DateToCompare)} | select DirectoryName,Name,CreationTime | sort DirectoryName

1 ответ1

1

Единственный фрагмент головоломки, который вам здесь не хватает, это флаг "-notcontains", который должен быть указан в предложении "Where". Вы точно знаете, от чего хотите избавиться , но код, который вы разместили, показывает , что именно вы не хотите. Выберите "исключить", а не "выбирать только" указанные вами элементы с -notcontains.

Источник: http://technet.microsoft.com/en-us/library/ee692798.aspx

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .