如何在PowerShell中比较两个日期并获取以分钟为单位的差异

11

我需要比较一个文件的LastWriteTime和当前时间。如果两者之间的时间差大于45分钟,则需要发送电子邮件警报。

以下是我目前的代码:

$StartDate=(GET-DATE)

$EndDate=[datetime]”01/01/2014 00:00NEW-TIMESPANStart $StartDateEnd $EndDate
在上面的代码中,我需要用 Get-Item C:\Users\myusername\Desktop\file.html | select LastWriteTime 替换 $EndDate
我需要比较 file.html 的 LastWriteTime 和当前时间。
请帮我将 Get-Item C:\Users\myusername\Desktop\file.html | select LastWriteTime 存储到 $EndDate 中,这样我就可以进行比较。
1个回答

17

我认为这应该可以运作:

if (((Get-Date) - (Get-ChildItem file.html).LastWriteTime).TotalMinutes -gt 45) {
 Write-Host "Old file"
}

将日期放入变量中的方法如下:

$EndDate = (Get-Item C:\Users\myusername\Desktop\file.html).LastWriteTime
或者
$EndDate = Get-Item C:\Users\myusername\Desktop\file.html |
    select -expandproperty LastWriteTime

select -expandproperty语法在旧版本的PowerShell(3.0之前)中需要使用,特别是当您需要访问多个对象的属性时。如果只有单个对象,我认为即使在PowerShell 2中也不需要使用它。


非常棒,非常感谢您提供的解决方案和解释。只有一个问题,对于if语句的代码,如果语句为假,意味着file.html不旧,并且在45分钟内进行了更新,那么代码就不会执行任何操作,对吗? - user206168

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接