【发布时间】:2016-11-09 19:07:22
【问题描述】:
我在 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 来确保格式匹配。但是循环永远找不到任何结果(即使它循环到 2016 年 11 月 1 日等)。我错过了什么吗?
【问题讨论】:
-
$today是一个字符串。$i -lt $today没有意义 -
@MathiasR.Jessen 嗯。但是循环工作得很好。它从今天 30 开始并循环到今天,并且每次传递都输出
Comparing <DATE> to:。它只是没有找到任何哈希键。 -
@Zeno:
$i -lt $today按预期工作的唯一原因是 string$today被重新转换为[datetime]用于比较,因为 LHS 的类型为[datetime],但没有充分的理由将$today表示为字符串开头。
标签: powershell