PowerShell获取子项更改输出

PowerShell获取子项更改输出,powershell,get-childitem,export-csv,Powershell,Get Childitem,Export Csv,注意到PowerShell Get ChildItem的一些奇怪行为。我在脚本中做了如下操作: New-PSDrive -Name "R" -PSProvider "FileSystem"-Root "\\server\share" $files = Get-ChildItem "R:/" | Select-Object -Property * -ExcludeProperty VersionInfo $files | export-csv -Path "output.csv" -Delimit

注意到PowerShell Get ChildItem的一些奇怪行为。我在脚本中做了如下操作:

New-PSDrive -Name "R" -PSProvider "FileSystem"-Root "\\server\share"
$files = Get-ChildItem "R:/" | Select-Object -Property * -ExcludeProperty VersionInfo
$files | export-csv -Path "output.csv" -Delimiter ";" 
Get ChildItem返回一个具有诸如BaseName、FullName、Parent、Root等属性的对象

我遇到的问题是,最近(或在我装载的某些网络共享上),Get ChildItem返回的对象的属性发生了更改。过去是这样的:

PSPath  PSParentPath    PSChildName PSDrive PSProvider  PSIsContainer   Mode    BaseName    Target  LinkType    Name    FullName    Parent  Exists  Root    Extension   CreationTime    CreationTimeUtc LastAccessTime  LastAccessTimeUtc   LastWriteTime   LastWriteTimeUtc    Attributes
到最近为止(或者如前所述,对于某些共享文件夹,还没有弄清楚),添加了以下属性:

Length  DirectoryName   Directory

在我的CSV中,我现在在Name和IsRead之间有3个额外的列,只添加了上述3个属性。有人知道这是由于PowerShell的更新还是由于安装了共享文件夹的特定服务器造成的吗?

正如@AdminOfThings所指出的,
Get ChildItem
可以返回多种对象类型:DirectoryInfo和FileInfo,其中只有FileInfo具有属性Directory目录名长度。因此,当将结果从
Get ChildItem
导出到CSV文件时。如果文件夹中还包含文件,则此文件将仅包含3列

以下文档描述了提交多个不同类型对象时导出csv的行为:

提交多个对象以导出CSV时,“导出CSV”将根据提交的第一个对象的属性组织文件。如果其余对象没有指定的属性之一,则该对象的属性值为null,由两个连续的逗号表示。如果其余对象具有其他特性,则这些特性值不会包含在文件中


一旦找到使CSV输出一致的解决方案,我将更新答案。

Get Childitem
命令上使用
-File
参数。Get-Childitem-File | gm仍然显示这3个附加属性。你认为它显示这些属性是因为结果中有目录?啊,get childitem-Directory | gm不显示这3个属性。也许你的假设是正确的,但我的解释是相反的。