PowerShell获取子项更改输出
注意到PowerShell Get ChildItem的一些奇怪行为。我在脚本中做了如下操作: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
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个属性。也许你的假设是正确的,但我的解释是相反的。