在Powershell中匹配具有不同格式的日期

时间:2014-06-24 21:17:47

标签: powershell powershell-v2.0

我正在尝试将启动时间与文件修改日期相匹配,相隔几分钟。

我可以获取数据,但不知道如何进行计算。这是我得到的:

PS E:\> $disk=gci -Attributes hidden E:\filename.ext | Select LastWriteTime
PS E:\> $disk

LastWriteTime
-------------
6/23/2014 12:55:48 PM

PS E:\> $boottime=Get-CimInstance -ClassName win32_operatingsystem | select last bootuptime
PS E:\> $boottime
lastbootuptime
--------------
6/23/2014 12:55:39 PM

我用英语寻找的是一种说法“如果lastwritetime在上次启动时间的5分钟内,那么一切都很好。如果没有,一切都很糟糕”

我如何使用PowerShell做到这一点?

2 个答案:

答案 0 :(得分:1)

嗯,这些都是日期和时间,这是肯定的。问题是Get-WMI正在返回一些相对无用的疯狂CimInstance对象。您可以做的是将其提供给Get-Date,并生成[DateTime]对象,这非常有用!试试这个:

$boottime=get-date (Get-CimInstance -ClassName win32_operatingsystem | select -expand lastbootuptime)

然后你可以做类似的事情:

IF($Disk.Lastwritetime -lt $boottime.addminutes(5)){"All is good!"} else {"There is a disturbance in the force!"}

答案 1 :(得分:1)

我会减去日期时间并使用生成的TimeSpan对象。另请注意,使用select-object获取裸值需要使用-ExpandProperty。

$disk=gci -Attributes hidden E:\filename.ext | Select -ExpandProperty LastWriteTime

$boottime=Get-CimInstance -ClassName win32_operatingsystem | select -ExpandProperty lastbootuptime

if(($disk-$bootTime).TotalMinutes -lt 5){
  "all is good"
}