我目前正在使用这个脚本从给定路径中提取名称,文件夹,文件夹名:
Get-ChildItem "C:\user\desktop" | Select Name, `
@{ n = 'Folder'; e = { Convert-Path $_.PSParentPath } }, `
@{ n = 'Foldername'; e = { ($_.PSPath -split '[\\]')[-2] } } ,
@{ n = 'Fullname'; e = { Convert-Path $_.PSParentPath } } |
Export-Csv "C:\user\desktop\txt.txt" -Encoding Utf8 -NoTypeInformation
我在获取@{ n = 'Fullname'; e = { Convert-Path $_.PSParentPath } }
的完整文件路径时遇到了问题。
任何帮助都非常感谢。
2条答案
按热度按时间kb5ga3dv1#
当你想用
PSPath
来获取全名(完整的文件系统路径)时,你错误地引用了PSParentPath
:然而,正如其他人所指出的,完整路径是
Get-ChildItem
生成的输出对象([System.IO.DirectoryInfo]
类型的示例)的标准属性,因此您可以简单地引用**FullName
属性**:注:
'\\'
将作为-split
操作符的RHS,但如果你想跨平台友好,你可以使用[\\/]
注意:上面使用的基于hashtable的技术(
@{ n = ...; e = ... }
,其中n
是Name
的缩写,e
是Expression
的缩写)称为 * 计算属性 *,在概念about_Calculated_Properties帮助主题中进行了描述,适用于所有支持计算属性的小工具。nzkunb0c2#
DirectoryInfo
对象(Get-ChildItem
的文件夹输出)具有带有文件夹名称和完整路径的属性Name
和FullName
。它们还有一个属性Parent
,它返回父文件夹的另一个DirectoryInfo
对象。您可以将该信息添加为calculated property。因为你基本上想为列出的项添加祖父名称和路径,并且这些信息不会因为你不递归而改变,所以你可以确定它们一次,然后将它们作为静态信息添加: