如何使用 PowerShell 生成文件夹大小报告?

如何使用 PowerShell 生成文件夹大小报告?

在 Linux 上,我可以使用以下命令生成 CSV 输出

du -hs /home/*/imap/*/* | sort -rh | sed 's/\//\t/g' | awk '{print $5 " " $6 " " $1}' | sed 's/ /,/g'

此命令输出具有以下结构的 CSV 文件:

 domain,username,userfoldersize 

我正在尝试使用 PowerShell 获取类似的输出。

我在网上找到了这段代码,但它显示的大小不正确。超过 GB 大小的文件夹大小仍以 MB 为单位显示。此外,它在子目录中显示得太远了。

$startFolder = 'C:\path\to\mail\domain\user'

$colItems = (Get-ChildItem $startFolder | Measure-Object -property length -sum)
"$startFolder -- " + "{0:N2}" -f ($colItems.sum / 1MB) + " MB"

$colItems = (Get-ChildItem $startFolder -recurse | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)
foreach ($i in $colItems)
    {
        $subFolderItems = (Get-ChildItem $i.FullName | Measure-Object -property length -sum)
        $i.FullName + " -- " + "{0:N2}" -f ($subFolderItems.sum / 1MB) + " MB"
    }

我有一个这样的目录:C:\path\to\mail\domain\user我希望它显示文件夹的完整路径user,并显示user文件夹大小。以人类可读的格式。例如:500MB、5GB 等...

答案1

从你的问题来看,你似乎对 Linux 命令行很熟悉。在 Windows 上,你不必抛弃这些知识去学习新命令:相反,你可以利用你已经知道的知识,继续使用熟悉的bashdusortsedawk

我的建议是:

  1. 采用赛格威或者康德相似的 工具,以便继续做你的工作
  2. 学习电源外壳做新的事情

注意:有时便携式安装是唯一的选择;在这种情况下,我建议康德

相关内容