我正在编写一个脚本,以递归方式检查目录中的所有文件夹和文件名,然后将名称和上次写入时间返回给文本文件。我只想要在过去二十四小时内添加的文件和文件夹的名称。
$date = Get-Date
Get-ChildItem 'R:\Destination\Path' -recurse |
Where-Object { $_.LastWriteTime -lt $date -gt $date.AddDays(-1) } |
Select LastWriteTime, Name > 'C:\Destination\Path\LastWriteTime.txt' |
Clear-Host
Invoke-Item 'C:\Destination\Path\LastWriteTime.txt'
调用的.txt文件是空白的,根据我设置的测试条件,不应该是这种情况。我做错了什么?
答案 0 :(得分:4)
您缺少逻辑和。变化:
Where-Object { $_.LastWriteTime -lt $date -gt $date.AddDays(-1) }
到
Where-Object { $_.LastWriteTime -lt $date -and $_.LastWriteTime -gt $date.AddDays(-1) }
更好地使用括号,如果您使用它们,那么语法将不会使用缺少的 AND 进行解析:
Where-Object { ($_.LastWriteTime -lt $date) -and ($_.LastWriteTime -gt $date.AddDays(-1)) }