在PowerShell中递归获取具有大小的文件

问题描述 投票:0回答:1

我有

$postpst = ls $home_user\post | Measure-Object length -Sum | % {
        New-Object psobject -prop @{
            Name = "$home_user\post"
            Groesse = $(
                switch ($_.sum) {
                    { $_ -gt 1gb } { '{0:N2}GB' -f ($_ / 1gb); break }
                    { $_ -gt 1mb } { '{0:N2}MB' -f ($_ / 1mb); break }
                    { $_ -gt 1kb } { '{0:N2}KB' -f ($_ / 1Kb); break }
                    default { '{0}B ' -f $_ } 
                }
            )
        }
     }
$postpst

它仅在post dir中为每个用户显示一个文件,但不显示2个或更多。我如何得到所有?

我也尝试过:

$postpst = ls $home_user\post | Select-Object Name, @{Name="MegaBytes";Expression= {$_.Length / 1MB}}
$postpst

这里,我不能格式化为零位小数。

我的最终结果应该是每个用户主目录的递归文件列表,其大小搜索特定的扩展名(此处为pst文件)。

这是我的没有大小的代码:

$pst= Get-ChildItem -Path $home_user -Filter *.pst -Recurse -File| Sort-Object Length -Descending | ForEach-Object{ $_.FullName}

我访问过:

How to retrieve recursively any files with a specific extensions in PowerShell?

powershell fileinfo
1个回答
2
投票

Get-ChildItem将做您想要的,您只需要在输出中摆弄一些即可。您可以在一行中完成全部操作:

Get-ChildItem -Filter *.pst -Path  $home_user |
Sort-Object Length -Descending  |
Select-Object FullName, @{name='Size';expression={
  switch ($_.length) {
    { $_ -gt 1gb } { '{0:N2}GB' -f ($_ / 1gb); break }
    { $_ -gt 1mb } { '{0:N2}MB' -f ($_ / 1mb); break }
    { $_ -gt 1kb } { '{0:N2}KB' -f ($_ / 1Kb); break }
    default { '{0}B ' -f $_ }
  }
}}
© www.soinside.com 2019 - 2024. All rights reserved.