#powershell
#powershell
Вопрос:
Я пытаюсь найти значение ячейки предыдущей ячейки в том же столбце в приведенном ниже csv. Я получу дату и получу соответствующее ей название, а также найду предыдущее значение ячейки в столбце.
startDate endDate Name
20-03-2019 30-03-2019 marchLogs
01-03-2019 15-03-2019 aprilLogs
$dt = Get-Date
Import-CSV filepath.csv
foreach($item in $csv)
{
$Start = $($item.StartDate)
$End = $($item.EndDate)
if($dt -gt $Start -and $dt -lt $End )
{
$finalName = $($item.Name)
# $previousName
}
}
В приведенном выше коде у меня будет $final
значение name как aprilLogs
, теперь мне нужно предыдущее имя marchLogs
в новом значении $previousName
.
Ответ №1:
Существует несколько способов:
- Получить доступ к данным csv по индексу, при выполнении условия использовать предыдущий индекс
- используя ваш forach и сохраняя предыдущую запись, если выполнено условие …
Или:
$finalName = (Import-CSV filepath.csv |
Where {[datetime]::parseexact($_.EndDate,"dd-MM-yyyy",[CultureInfo]::InvariantCulture) -lt (Get-Date)} |
Sort {[datetime]::parseexact($_.EndDate,"dd-MM-yyyy",[CultureInfo]::InvariantCulture)} | Select -Last 1).Name
Ответ №2:
$dt = Get-Date
$csv = Import-Csv "filepath.csv"
foreach($item in $csv)
{
$Start = $($item.StartDate)
$End = $($item.EndDate)
if($dt -gt $Start -and $dt -lt $End )
{
$index = $csv.Indexof($item)
$previous = $csv[$index-1]
}
}
$previous.Name