2012-07-15 107 views
0

因此,当我在一个目录上运行Get-ChildItem时,输出将具有“长度”,但是当我管道到Export-Csv时,输出会有很多附加信息,但由于某种原因,“长度”不再包含在内。PowerShell不导出长度与Export-Csv cmdlet

有没有一种方法可以确保“长度”包含管道到Export-Csv提供的所有信息?

回答

2

Export-Csv检查管道中的第一个对象,并将其用作列定义的基础。在你的情况下,第一个对象是一个没有长度属性的文件夹。因此你得到的结果。

尝试过滤仅导出文件(where { ! $_.PsIsContainer })。

您还可以在导出之前使用Select-Object - 它将添加选定的属性,并将$ null分配给那些没有该属性的对象。最终结果大致相同(并且更加防弹,并允许更多“挑剔的”csv)。

+0

好吧,但对于Select-Object,我将不得不列出每个我想要的对象都是正确的? – Steve 2012-07-15 21:11:08

+0

那么,select-object的主要目标是选择对象的属性(类似于TSQL * SELECT * foo,bar FROM ...)并且它接受通配符,所以:'ls |选择名称,长度,*时间*'会工作得很好。即使你交叉选择(例如'select Name,*'),你可以忽略它们(或者用-ErrorAction SilentlyContinue静默),因为他们会告诉你的是,前面提到的属性*已经存在,不能翻倍。 – BartekB 2012-07-16 06:18:16