Следующее должно работать, чтобы получить самую последнюю дату редактирования любого файла в текущем каталоге.
Get-ChildItem | Sort-Object -Property LastWriteTime -Descending | Select-Object -first 1 -ExpandProperty "LastWriteTime"
Get-ChildItem
получает элементы в вашем каталоге
Sort-Object
-Property LastWriteTime
-Descending
сортирует по времени записи, самое позднее первое
Select-Object
-first 1
-ExpandProperty "LastWriteTime"
получает первое в списке, затем получает время записи
Я сделал это, чтобы получить данные, которые вы пытаетесь получить.Последняя строка дает нам пустую строку, если каталог пуст, что, вероятно, является самым безопасным для Excel, но вы также можете по умолчанию использовать что-то отличное от пустой строки, например, дату создания каталога:
$ChildDirs = Get-ChildItem | Where-Object { $_ -is [System.IO.DirectoryInfo] }
$EditNames = $ChildDirs | ForEach-Object Name
$EditTimes = $EditNames | ForEach-Object { @( (Get-ChildItem $_ | Sort-Object -Property LastWriteTime -Descending | Select-Object -first 1 LastWriteTime), '' -ne $null)[0] }
for($i=0; $i -lt $ChildDirs.Length; $i++) {
Write-Output $EditNames[$i]
Write-Output $EditTimes[$i]
}
Чтобы реализовать это для того, что вы делаете, если я правильно понимаю ваш вопрос, попробуйте следующее:
$ChildDirs = Get-ChildItem | Where-Object { $_ -is [System.IO.DirectoryInfo] }
$EditNames = $ChildDirs | ForEach-Object Name
$EditTimes = $EditNames | ForEach-Object { @( (Get-ChildItem $_ | Sort-Object -Property LastWriteTime -Descending | Select-Object -first 1 LastWriteTime), '' -ne $null)[0] }
for($i=0; $i -lt $ChildDirs.Length; $i++) {
#FolderName
$sheet.Cells.Item($row, $column) = $EditNames[$i]
$column++
#LastBackup
$sheet.Cells.Item($row, $column) = $EditTimes[$i]
$row++
$column = 1
}