将System.Uri与Get-ChildItem一起使用

时间:2015-08-12 20:40:03

标签: powershell

  1. 我需要生成过去七天内已更改的文件列表。据我所知,这是一种方法:

    Get-ChildItem | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}
    
  2. 我想"赶上"只有文件所在的基本目录。例如,如果文件位于路径" c:\ dir1 \ dir2 \ dir3"中,我只想捕获" dir1&# 34;目录(我不需要根路径)。据我所知,这是一种方法:

    ([System.Uri]"c:\dir1\dir2\dir3").segments[2]
    
  3. 问题在于我不了解如何结合以前的流程。如何生成相关目录的列表(如第2项中所述),该列表基于项目编号中描述的过程结果。 1。

  4. 我猜你不会感到惊讶,即使我们想要达到我想做的事情(如第3项所述),我们也会得到很多重复的结果。

  5. 即使我试图只实现第5项中描述的内容。 1,并尝试删除重复项,它没有按预期工作。

    我使用了以下命令(请注意Get-Unique cmdlet):

    Get-ChildItem | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)} |
      select directory | Get-Unique | Out-GridView
    

    我做错了什么?

1 个答案:

答案 0 :(得分:0)

对于3),在管道中使用ForEach-Object来处理每个元素(由$_表示):

Get-ChildItem | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)} | ForEach-Object { ([System.Uri]$_.FullName).segments[2] } | Get-Unique | Out-Gridview