PowerShell截取PSParentPath后保持表格格式输出的方法
解决方案
直接在Select-Object里用计算属性处理PSParentPath的截取,既能保留对象结构维持表格输出,也能直接导出CSV。
完整命令
Get-ChildItem -Recurse | Select-Object Name, Attributes, @{ Name = 'ParentPath' # 可自定义新属性名,也能保留原名称PSParentPath Expression = { $_.PSParentPath.Substring(38) } } | Export-Csv -Path "C:\你的输出路径\结果.csv" -NoTypeInformation
关键细节
- 计算属性是
Select-Object里的核心技巧,用@{Name='属性名'; Expression={处理逻辑}}的格式,能在不破坏原有对象结构的前提下加工属性值。PowerShell会把输出识别为结构化对象,自然保持表格格式,也能正常导出CSV。 - 要是想保留原属性名
PSParentPath,把Name的值改成PSParentPath即可,直接覆盖原属性:Get-ChildItem -Recurse | Select-Object Name, Attributes, @{ Name = 'PSParentPath' Expression = { $_.PSParentPath.Substring(38) } } | Export-Csv -Path "C:\你的输出路径\结果.csv" -NoTypeInformation - 你之前的方法失效是因为把属性转成了字符串输出,破坏了PowerShell的对象结构,PowerShell只能把零散字符串当成普通文本输出,没法生成表格。用计算属性全程保持对象结构,就不会有这个问题。
-NoTypeInformation参数用来去掉CSV开头的类型信息行,让导出的文件更干净。
内容的提问来源于stack exchange,提问作者Kirk Shimek
相关产品推荐
相关产品推荐

