1

我试图让Get-ChildItem检索文件夹的内容,并显示文件夹中每个对象的大小、对象的名称和类型(文件/目录)。但是,我无法仅使这三列起作用。

名称和长度相当简单,但如何显示文件和文件夹之间的差异?

4

2 回答 2

5

检查PSIContainer属性。对于文件夹,它设置为 $true,对于文件,它设置为 $false。这是一个例子:

Get-ChildItem | Foreach-Object{
    New-Object PSObject -Property @{
        Name = $_.Name
        SizeMB = if($_.PSIsContainer) { (Get-ChildItem $_.FullName -Recurse | Measure-Object Length -Sum).Sum/1mb  } else {$_.Length}
        Type = if($_.PSIsContainer) {'Directory'} else {'File'}
    }
}
于 2012-12-25T13:20:49.543 回答
1

我相信通过获取“模式”信息可以做到这一点。(在这里看到这个答案)

Get-ChildItem那么,基本上, “模式”以“”开头的命令列出的任何内容d

这是“模式”中 6 个可能值的实际含义,如果您不想转到@Joey的答案:

无论如何,完整列表是:

d - Directory
a - Archive
r - Read-only
h - Hidden
s - System
l - Reparse point, symlink, etc.

所以我用它来输出一个 CSV,然后我将在 excel、我的 Flow 或 SharePoint 中标记文件夹。我使用的命令是:

Get-ChildItem -Recurse | Select-Object DirectoryName, BaseName, Extension, Mode | Export-Csv -Path INSERTPATH\listings.csv -Encoding ascii -NoTypeInformation

希望这对遇到它的人有所帮助。


警告,这是我第一次以完整的回答意图回答。我相信即使这是 6 年的历史,人们在尝试实现相同的目标时仍然会发现它很有用。

于 2019-08-22T15:06:19.637 回答