我有一個包含資料的 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 變數?
我錯過了什么?
謝謝你的時間。
uj5u.com熱心網友回復:
這里有一個關于你如何解決你的問題的提示,首先,Lee_Dailey給了你一個很好的建議:總是DateTime用來比較 Dates 和 Times。
另一件事要注意,使用-eq可能不是正確的比較運算子,特別是過濾Time,通常您會按時間范圍過濾,例如:“比這多 2 分鐘,比這少 2 分鐘......”
這里有提示:
$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
12/22/2021 8:30 AM Medium 1:50:00 PM
'@ -replace ' ',',' | ConvertFrom-Csv
# Let's try to filter the last line of the CSV (1:50:00 PM)
$est = [System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId(
[datetime]::Now,
'Eastern Standard Time'
) # => Monday, December 20, 2021 1:48:45 PM
$result = $csv | Where-Object {
[datetime]$_.Warning -gt $est.AddMinutes(-15) -and
[datetime]$_.Warning -lt $est.AddMinutes(15)
}
# $result would yield:
Date Time Impact Warning
---- ---- ------ -------
12/22/2021 8:30 AM Medium 1:50:00 PM
# If you want to see just a True / False
[bool]$result # => True
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388240.html
