2014-07-08 86 views
0

本质上,我试图使用PowerShell在今年6月1日或之后创建的网络驱动器上查找具有某些文件扩展名的文件。我想我可以做到这一点与以下声明:Powershell网络驱动器Get-ChildItem问题

Get-ChildItem NETWORKPATH *。 -recurse -include .xlsx |位置对象{$ _ CREATIONTIME -GE“2014年6月1日”}

我遇到两个问题:

  1. 该命令只返回在从根文件,一个文件夹网络驱动器,此网络驱动器上有超过100个文件夹
  2. 该命令在6/1/14之后创建的5个文件中返回3,并且在创建时间日期之前创建了一个。

我有权访问网络驱动器上的所有文件夹。当我运行Windows 7搜索时,它会查找所有文件。如果我以管理员身份运行Powershell并不重要。无论我从我的机器(Windows 7)还是从我们的2008服务器之一运行它都没关系。我试图搜索的网络驱动器位于2003文件服务器上。我究竟做错了什么?

+0

@StephenP感谢您的及时响应,它看起来像问题2)是一个非问题,因为该文件的创建日期比修改日期更新(这显然可以发生在复制文件而不移动文件时) 。 –

+0

这仍然留下问题1.它看起来像权限问题,但在以下所有情况下我都得到相同的结果:1)以我自己的用户身份登录(有权访问至少查看此驱动器上的所有文件)并运行PowerShell作为管理员2)相同1但运行程序不是管理员3)登录在我的网络管理员帐户运行PowerShell作为管理员4)相同3但运行不是管理 –

+0

尝试了更多的东西,没有一个帮助包括: 1)添加-force。 2)删除-include * .xlsx并将路径末尾的通配符更改为* .xlsx 3)包含-path,然后将我的网络路径放入 4)在网络中使用映射的驱动器或UNC路径路径部分 –

回答

1

确保向通配符添加通配符。你也不应该使用字符串进行日期比较。请参阅here的示例。请尝试以下操作:

$testDate = new-object DateTime (2014,06,01) 
Get-ChildItem NETWORKPATH*. -recurse -include *.xlsx | Where-Object { $_.CreationTime -ge $testDate } 

另请注意,标记为隐藏的文件和文件夹不会显示出来,除非您将-force添加到get-childitem。不知道这是否是问题的一部分。

0

gci -path PATH -tracurse |其中{$ _。extension -match“xlsx”}是所有这一切的银弹。