$WshShell = New-Object -ComObject wscript.shell
$Time = (Get-Date).hour
$Time2 = Get-Date -DisplayHint Time
$Message ="Test for $Env:username at: " + $Time2
$fail = "ERROR:It is $Time2, which is past 12PM"
$PopUp = $WshShell.popup("$Message",0,"Task Scheduler Pop-up",1)
if ($Time2 > 12)
{
$PopUp = $wshShell.popup("$Message",0,"Task Scheduler Pop-up",1)
}
else {
$PopUp = $wshShell.popup("$fail",2,"Task Scheduler Pop-up",1)
}
大家好,我正在练习一些我的PowerShell并遇到了一些我不太确定如何使用Google的方法,或者我需要使用哪种方法才能使其正常工作。
我想要完成的只是我的盒子显示,小时和分钟如“12:31”。 正如你在脚本中看到的那样,我正在调用 小时,但我不知道如何让它以正确的方式显示时间。我正在使用“时间”运算符,但是当你在“IF”语句中比较它时,它不会将它识别为它可以比较的东西,因为它不是真正的整数。我理解为什么,但我希望能够将.Hour与$ Time2
进行比较我是新手,感谢您提供的任何帮助! 谢谢!
答案 0 :(得分:2)
在实际需要之前,不要考虑输出字符串。
>
无法进行比较,您需要使用-lt
(小于)和-gt
(大于)
如果要比较两个DateTime
个对象的时间(无论日期如何),您可以比较TimeOfDay
属性:
$DateTimeNow = Get-Date
$DateTimeEarly = Get-Date -Hour 1 -Minute 5
if($DateTimeNow.TimeOfDay -lt $DateTimeEarly.TimeOfDay){
"It is very early right now!"
} else {
"It is at least past 01:05"
}
如果要在输出中显示时间,您可以使用多个选项来格式化DateTime
字符串:
您可以将ToString()
方法与格式化字符串一起使用:
PS C:\> (Get-Date).ToString('HH:mm')
20:41
格式化运算符-f
:
PS C:\> '{0:HH:mm}' -f (Get-Date)
20:41
或让Get-Date
返回格式化的字符串:
PS C:\> Get-Date -Format 'HH:mm'
20:41
如果您想要12小时的时间,请使用hh:mm
答案 1 :(得分:0)
如果您需要显示时间,可以使用多种方法之一。那些都将结果转换为字符串。我认为您需要将$time2
保存为[datetime]
个对象。这样,您可以将其格式化以便显示,并使用.Hour
作为比较逻辑。
$Time2 = Get-Date
$Message ="Test for $Env:username at: " + $Time2.ToString("HH:mm")
$PopUp = $WshShell.popup("$Message",0,"Task Scheduler Pop-up",1)
if ($Time2.Hour -gt 12){
#Do Stuff
}
这种逻辑只能在24小时内工作。 1(pm)小于12但在当天晚些时候。这是HH:mm所代表的。