Внутри вашего цикла вы можете использовать следующее, чтобы перечислить OST-файл, который имеет самое старое значение LastWriteTime
.Просто добавьте флаг -Descending
к Sort-Object
, чтобы вывести список самого нового файла.
$FullFileName = foreach ($folder in $Subfolders) {
$Get-ChildItem -Path $folder -Recurse -File -Filter "*.ost" |
Sort-Object -Property LastWriteTime |
Select-Object -Property FullName -First 1
}
$FullFileName
Если в пути $folder
найден только один файл .ost, он все равно найдет этот файл.Поэтому вам понадобится логика, чтобы не удалять, когда есть только один файлЭто не гарантирует, что это самый старый файл.Вы, вероятно, хотите комбинацию самого старого CreationTime
и самого нового LastWriteTime
.Ниже приведен список самого старого файла .ost, основанного на CreationTime
.
$FullFileName = foreach ($folder in $Subfolders) {
Get-ChildItem -Path $folder -Recurse -File -Filter "*.ost" |
Sort-Object -Property CreationTime |
Select-Object -Property FullName -First 1
}
$FullFileName
Другая проблема заключается в установке переменной $FullFileName
внутри цикла foreach.Это означает, что он будет перезаписываться при каждой итерации циклаПоэтому, если вы получите значение после завершения цикла, оно будет иметь только последнее найденное значение.Установка переменной как результата вывода цикла foreach создаст массив с несколькими значениями.
Чтобы вывести путь к файлу OST только при наличии нескольких файлов OST, вы можете сделать что-то вроде следующего:
$FullFileName = foreach ($folder in $Subfolders) {
$files = Get-ChildItem -Path $folder -Recurse -File -Filter "*.ost" |
Sort-Object -Property LastWriteTime -Descending
if ($files.count -ge 2) {
$files | Select-Object -Property FullName -First 1
}
$FullFileName