Como gerar um relatório de tamanho de pasta com o PowerShell?

1

No Linux, posso gerar uma saída CSV com o seguinte comando

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

Este comando gera um arquivo CSV com o seguinte structuur:

 domain,username,userfoldersize 

Estou tentando obter uma saída semelhante com o PowerShell.

Eu encontrei este código online, mas ele não exibe os tamanhos corretos. Foldersizes sobre tamanhos GB, ainda são exibidos em MB. Além disso, vai longe no subdiretório.

$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"
    }

Eu tenho um diretório como este: C:\path\to\mail\domain\user e quero que ele exiba o caminho completo para a pasta user e exiba o user foldersize. Em um formato legível por humanos. exemplo: 500MB, 5GB, etc ...

    
por blade19899 23.10.2017 / 16:50

1 resposta

1

Da sua pergunta, parece que você está confortável com a linha de comando do Linux. Quando no Windows, você não precisa necessariamente dispensar esse conhecimento e aprender novos comandos: em vez disso, você pode aproveitar o que já sabe e continuar usando os familiares bash , du , sort , sed e awk .

Minha sugestão é:

  1. empregue cgiwin ou cmder ou um semelhante ferramenta , para continuar fazendo suas coisas
  2. aprenda Powershell para fazer coisas novas

Nota: às vezes, uma instalação portátil é o único caminho a percorrer; Nesse caso, eu recomendaria cmder .

    
por 31.10.2017 / 12:46

Tags