【发布时间】:2022-01-22 07:51:25
【问题描述】:
我有一个包含数据的 CSV
Date Time Impact Warning
12/20/2021 10:00 AM Low 9:57:00 AM
12/21/2021 8:30 AM Low 8:27:00 AM
12/22/2021 8:30 AM Medium 8:27:00 AM
我有一个计时器循环正在运行,如果警告时间为 -eq 到当前时间(EST),我希望变量 $eventsoon 为真。
#Import CSV
$csv = Import-Csv C:\filelocation.csv
#Get eastern Timezone#
$eastern = [System.TimeZoneInfo]::convertTimeBySystemTimeZoneId([datetime]::Now, 'Eastern Standard Time')
#Format Eastern Time#
$easternTime = Get-Date $eastern -format "HH:mm:ss tt"
#Find Matching Time between Current US Eastern Time and Warningtime
$eventsoon = $csv |
Where-Object { $_.Warning -eq $easternTime} |
ForEach-Object {
Write-Host ($_.Warning,$_.Impact)
}
$eventsoon
测试时,我可以触发 -eq 但没有保存到 $eventsoon 变量?
我错过了什么?
感谢您的宝贵时间。
【问题讨论】:
-
除非重定向 (
6>&1),否则不会捕获来自Write-Host的输出。不要使用它:) -
我正在使用 write-host 进行测试。我会继续努力。谢谢圣地亚哥
-
您查看过
$EasternTime中的内容吗?您使用了HH:mm:ss tt...这将给出08:27:00 AM...但您的$_.Warning将显示8:27:00 AM。 [grin] ///// 这就是为什么您不应该比较日期时间字符串的原因之一 - 而是比较日期时间对象。*跨度> -
正确,我试图 -eq 一个字符串和一个对象。试图将字符串传递给对象
-
@MattyS - 所以将您的
$_.Warning转换为日期时间对象并将您的$EasternTime保留为日期时间对象,而不是将其强制转换为日期字符串。
标签: powershell csv