Get-ChildItem文件/文件夹

时间:2012-12-25 13:02:19

标签: powershell

我试图让Get-ChildItem检索文件夹的内容,并显示文件夹中每个对象的大小,对象的名称和类型(文件/目录)。然而,我只能让这三列工作。

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

2 个答案:

答案 0 :(得分:5)

检查PSIsContainer属性。文件夹设置为$ 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'}
    }
}

答案 1 :(得分:1)

我相信,通过获取“模式”信息,这是可能的。 (请参见答案here

然后,基本上是Get-ChildItem命令列出的所有内容,其中“模式”以“ d”开头。

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

  

无论如何,完整列表为:

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岁了,人们在尝试实现同一目标时仍然会发现它很有用。