【发布时间】:2022-01-07 01:53:17
【问题描述】:
我目前正在尝试获取包含多个子目录和文件的 128.5GB 文件夹中所有文件的最后修改日期。但是,每当脚本运行时,它几乎都会使用服务器上的所有内存。 (我认为这是因为它试图在将所有数据输出到 .csv 文件之前将其放入内存中)。有没有一种方法可以在不使用服务器上所有内存的情况下仍将数据输出到 .csv 文件中。请找到我的以下脚本:-
$results = Get-ChildItem -Force -Recurse -File -Path "C:\inetpub\wwwroot\" | Sort LastWriteTime -Descending | Select-Object FullName, LastWriteTime
$results | Export-Csv "C:\Users\serveradmin\Documents\dates.csv" -notype
【问题讨论】:
-
有多少个文件?在某些情况下,Get-Childitem 被称为 slow,而 NTFS 在处理 large number 的文件时表现不佳。
-
嗨 vonPryz,站点文件夹包含大约 5,721,620 个文件。
-
是的。您使用的是数据库,而不是 500 万个文件。文件系统不是数据库。
-
文件系统 is 是一个数据库,这里的问题是 OP 会在不需要时尝试将其元数据的重要块加载到内存中。您也不会从数据库中下载原始索引 :)
-
哦,天哪,在 NTFS 上工作超过五百万个文件将是非常痛苦的。它不是将文件内容读入内存,“仅”处理文件元数据。但是对于数百万个文件,这将需要相当大的努力。
标签: windows powershell server automation scripting