2012-07-15 88 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