提高PowerShell Get-ChildItem大目录的速度

时间:2017-11-06 17:25:36

标签: powershell large-data get-childitem

我有一个引用.csv文件名文档的脚本,然后在一个大目录上运行Get-ChildItem来查找文件并拉出“所有者”。最后,信息输出到另一个.csv文档中。我们使用它来查找谁创建了文件。另外,我创建了.txt文件,其中包含文件名和时间戳,以查看脚本查找数据的速度。代码如下:

    Get-ChildItem -Path $serverPath -Filter $properFilename -Recurse -ErrorAction 'SilentlyContinue' |
        Where-Object {$_.LastWriteTime -lt (get-date).AddDays(30) -and
                      $_.Extension -eq ".jpg"} |
        Select-Object -Property @{
            Name='Owner'
            Expression={(Get-Acl -Path $_.FullName).Owner}
          },'*' |
        Export-Csv -Path "$desktopPath\Owner_Reports\Owners.csv" -NoTypeInformation -Append
        $time = (get-date -f 'hhmm')
        out-file "$desktopPath\Owner_Reports\${fileName}_$time.txt"
}

此脚本用于其目的,但基于父目录的大尺寸非常慢。目前每个文件名需要12分钟。我们一次查询大约150个文件,这个漫长的等待时间阻碍了生产。

有没有人有更好的逻辑可以提高速度?我假设每次脚本运行Get-ChildItem时它会重新创建父目录的索引,但我不确定。有没有办法可以一次创建索引而不是每个文件名?

我愿意接受任何建议!如果需要更多数据(例如变量命名等),我将根据要求提供。

谢谢!

0 个答案:

没有答案