У меня есть хэш-таблицу в Powershell, который выглядит так ($hash_dates.GetEnumerator() | sort -Property name
):Цитирование через даты в хеш-таблице?
11/1/2016 12:00:00 AM 5
11/2/2016 12:00:00 AM 3
11/4/2016 12:00:00 AM 2
Ключ имеет тип DateTime.
Я запускаю цикл for, чтобы поймать все даты (только даты, время не имеет значения, таким образом, вся полночь) и вытащите каждое значение в хеш-таблице на основе даты. Код:
$startdate = (get-date).AddDays(-30)
$today = get-date -format G
for($i = $startdate; $i -lt $today; $i=$i.AddDays(1))
{
$z = $i -split " "
$z = [datetime]$z[0]
$z = Get-Date $z -format G
"Comparing $z to: "
$hash_dates.Keys | ? { $hash_dates[$_] -eq $z }
}
Я использовал -format G
и split
для обеспечения матчей формата. Но цикл никогда не находит никаких результатов (даже если он проходит через 11/1/2016 и т. Д.). Я что-то упускаю?
'$ today' является строкой. '$ i -lt $ today' не имеет смысла –
@ MathiasR.Jessen Хмм. Но цикл работает отлично. Он начинается с сегодняшнего дня - 30 и продолжается до сегодняшнего дня, и выводит 'Сравнение на:' каждый проход. Он просто не находит хеш-ключи. –
Zeno
@Zeno: Единственная причина, по которой '$ i -lt $ today' работает так, как предполагается, заключается в том, что _string_' $ today' повторно преобразуется в '[datetime]' _ для сравнения_, потому что _LHS_ имеет тип '[datetime]' , но нет веской причины представлять '$ today' в качестве строки для начала. – mklement0