powershell:get-date.adddays不正确?

时间:2009-01-30 21:39:20

标签: powershell

我要做的是创建一个PowerShell脚本,它获取目录中的文件夹列表,该目录由正则表达式过滤,用nnnnnnx31或nnnnnnddd筛选出文件夹名称,其中n =前6个字符的alpha字符和最后3个是静态字符串x31的数字。接下来,它会筛选文件是否为90天,这些文件将被复制到另一个目录。

当我尝试跑步时:

get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$"} | where {$_.lastwritetime -lt (get-date.adddays(-90)}

我收到错误:

You must provide a value expression on the right-hand side of the -lt operator
At line: 1 char: 96
+ get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$"} | where {$_.lastwritetime -lt  <<<< get-date.adddays(-90)}

我也尝试过以下操作,但是没有用:

get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$"} | where {$_.lastwritetime -lt (get-date | foreach-object {$_.adddays(-90)}) }

有什么想法吗?

3 个答案:

答案 0 :(得分:8)

您需要执行(get-date).AddDays(-90)

答案 1 :(得分:1)

试试这个 - get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$"} | where {$_.lastwritetime -lt (get-date).adddays(-90)}

答案 2 :(得分:1)

您可以使用一个where-object而不是两个:

get-childitem | where {$_.name -match "^\d{6}([a-zA-Z]{3}|x31)$" -AND $_.lastwritetime -lt (get-date).adddays(-90)}