powershell中的上次写入时间逻辑

powershell中的上次写入时间逻辑,powershell,powershell-2.0,Powershell,Powershell 2.0,我试图编写一个简单的逻辑,在以下情况下触发事件: 如果某个文件夹中存在某个文件,而另一个文件夹中的上次修改日期大于1小时(文件未被修改的时间超过1小时/分钟等),则触发事件 我已经在powershell中编写了以下登录,但我不确定这是我想要的 if ((Test-Path D:\Projects\test\*) -and (Get-ChildItem D:\Projects | Where{($_).LastWriteTime -gt (Get-Date).AddMinutes(-1)}))

我试图编写一个简单的逻辑,在以下情况下触发事件:

  • 如果某个文件夹中存在某个文件,而另一个文件夹中的上次修改日期大于1小时(文件未被修改的时间超过1小时/分钟等),则触发事件
我已经在powershell中编写了以下登录,但我不确定这是我想要的

if ((Test-Path D:\Projects\test\*) -and (Get-ChildItem D:\Projects | Where{($_).LastWriteTime -gt (Get-Date).AddMinutes(-1)})) {
    $value = $TRUE
    (Get-Date).AddMinutes(-1)
    ($_).LastWriteTime
    Write-Host "pass"
    Write-Host $value
}
else {
    $value = $FALSE
    Write-Host "fail"
    Write-Host $value
}
是逻辑上遗漏了什么,还是我走错了路


注意:另一个文件夹中有许多文件,我们需要在其中检查上次修改的日期。我们需要检查最新文件的最后修改日期。

根据您的其他要求:

$Test = (Get-Date).AddMinutes(-1)
$Files = Get-ChildItem D:\Projects |
  Sort-Object -Property LastWriteTime -Descending |
  Where-Object { $_.LastWriteTime -lt $Test } |
  Select-Object -First 1

If ((Test-Path D:\Projects\test\*) -and $Files)
{
    $value = $TRUE
    $Test
    $Files.LastWriteTime
    Write-Host "pass"
    Write-Host $value
}
Else
{
    $value = $FALSE
    Write-Host "fail"
    Write-Host $value
}

你的循环很好。在你的
if循环中插入触发器动作,你的工作就完成了。谢谢@VivekKumar,但还有一个条件我忘了提到。文件夹中有很多文件(上次修改的日期),我只需要比较最新的文件。我想我缺少了分类部分,这很简单。像这样使用
select object
cmdlet<代码>(获取子项D:\Projects |其中{($).LastWriteTime-gt(获取日期).AddMinutes(-1)}|选择对象-第一个1)
。如果文件是根据
LastWriteTime
按降序排序的,那么将选择您的最新文件。即使在创建文件2-3分钟后,我每次都会得到“true”。它没有流向false。您是否检查了创建的文件是否为动态文件?就像脚本运行时创建的文件一样。在这种情况下,它将再次成为现实。否则我看不到任何瑕疵。您可以测试这个
(获取日期).AddMinutes(-2)-gt(获取日期).AddMinutes(-1)
。这将始终返回false。