Мне кажется, что вы заканчиваете тем, что сравнение основано на строках, а не на датах, например:
"10/08/2007 20:20:13" -lt (Get-Date -Year 1900)
Число всегда будет меньше, чем "воскресенье" или "понедельник" или что-либо еще, что вы получите в начале строки, когда объект DateTime приведен к строке ...
У меня нет доступа к набору резервных копий, на которых я мог бы это проверить, но для начала вам следует это исправить, и в то же время убедиться, что вы не удаляете резервную копию только потому, что значение нуль:
# Find the old backups in spbrtoc.xml
$old = $sp.SPBackupRestoreHistory.SPHistoryObject |
Where { (Get-Date $_.SPStartTime) -lt ((get-date).adddays(-$days)) }
Формат строки даты в файле XML (в соответствии с страницей документов ) - это формат, который Get-Date может легко проанализировать, поэтому он должен работать без проблем.
Кстати, ваше предположение верно, что $ _ является текущим объектом итерации из массива;)