我有一个引用.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
时它会重新创建父目录的索引,但我不确定。有没有办法可以一次创建索引而不是每个文件名?
我愿意接受任何建议!如果需要更多数据(例如变量命名等),我将根据要求提供。
谢谢!