使用Test-Path -NewerThan检查文件的日期

时间:2018-02-26 10:55:29

标签: powershell powershell-v4.0

我有以下方法来验证远程文件夹中是否存在文件,我需要检查文件的日期必须是当前日期。

如果我执行以下声明,它似乎可以正常工作

$Exs = Test-Path  '\\srvcld\Homeware\Applications\Processed\Soc*' -NewerThan (Get-Date -UFormat "%d/%m/%Y")

但是当它在entiere脚本中运行时,它会返回以下错误:

  

测试路径:无法绑定参数' NewerThan'。无法转换价值" 02/23/2018"输入" System.DateTime"。错误:" String未被识别为有效的DateTime。"

您是否知道另一种方法可用于验证当前日期是否存在文件?

2 个答案:

答案 0 :(得分:1)

这可能有助于你

Get-ChildItem -Path "<path>" | Where-Object {$_.LastWriteTime -ge (Get-Date).Date}

答案 1 :(得分:0)

请勿格式化日期。这会将其转换为[String],并在将其转换回[DateTime]时依赖于您的文化。

相反,保持为[DateTime]对象并将其传递给Test-PathThat's the type it's expecting anyway

$Exs = Test-Path  '\\srvcld\Homeware\Applications\Processed\Soc*' -NewerThan (Get-Date).Date

要添加到Dharini's answer,这会提供当前日期而非时间。如果您想查看类型,请运行以下命令。

$date1 = Get-Date -UFormat "%d/%m/%Y"
$date2 = (Get-Date).Date

$date1.GetType()     # returns String
$date2.GetType()     # returns DateTime