Powershell网络驱动器Get-ChildItem问题

时间:2014-07-08 21:19:50

标签: powershell windows-7 windows-server-2008

基本上我是尝试使用PowerShell在今年6月1日或之后创建的网络驱动器上查找具有特定文件扩展名的文件。我以为我可以用以下声明做到这一点:

Get-ChildItem NETWORKPATH *。 -recurse -include .xlsx | Where-Object {$ _。CreationTime -ge" 06/01 / 2014" }

我遇到了两个问题:

  1. 该命令仅返回来自根目录的文件和网络驱动器上的一个文件夹,此网络驱动器上有超过100个文件夹
  2. 该命令返回6/1/14之后创建的5个文件中的3个,并且在创建时间日期之前创建了一个文件。
  3. 我可以访问网络驱动器上的所有文件夹。当我运行Windows 7搜索时,它会找到所有文件。如果我以管理员身份运行Powershell并不重要。如果我从我的机器(Windows 7)或我们的2008服务器之一运行它并不重要。我尝试搜索的网络驱动器位于2003文件服务器上。我做错了什么?

3 个答案:

答案 0 :(得分:1)

确保在Include参数中添加通配符。此外,您不应该使用字符串进行日期比较。请参阅为什么不是here的示例。请尝试以下方法:

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

另请注意,除非您向get-childitem添加-force,否则标记为隐藏的文件和文件夹不会显示。不确定这是否是问题的一部分。

答案 1 :(得分:0)

gci -path PATH -recurse |其中{$ _。extension -match" xlsx"} 是所有这些的灵丹妙药。

答案 2 :(得分:0)

这就是我用的。

$Extensions = '*.xlsx','*.csv','*.xls'
$path = 'Network path'
Get-ChildItem "$path" -Include $Extensions -Recurse -Force | where {$_.CreationTime -gt 
[datetime]"10/05/2018"} | Select * | Export-Csv -Path C:\TestExcelfiles.csv - 
NoTypeInformation | fl * #format-wide