【问题标题】:Powershell Import-CSV - How to Select-Object & Rename Specific Columns and Export to NewCSVPowershell Import-CSV - 如何选择对象和重命名特定列并导出到新的 CSV
【发布时间】:2021-08-31 19:17:17
【问题描述】:

我正在尝试简单地重命名现有 CSV 中的列名,然后导出新的。

我不想要所有列。只有具体。我见过的所有示例都展示了如何做所有事情,而不是特定的列。

但我被这个错误困住了:

选择对象:缺少参数“属性”的参数。指定 'System.Object[]' 类型的参数,然后重试。

Import-Csv "ORIGINALFILEPATHHERE" | 
Select-Object -Property 
@{name="Dept";expression=$_.'Account'},
@{name="Office";expression=$_.'Location'}| 
Export-Csv -Path "EXPORTPATHHERE"  -NoTypeInformation -UseCulture -Force

【问题讨论】:

  • 参数名称-Property后面有一个换行符。这是不允许的。删除它,它会工作。而且...在您的计算属性中,您的表达式周围缺少花括号。
  • 请考虑将解决您问题的答案标记为解决方案。

标签: powershell csv select-object


【解决方案1】:

如果您真的想打破select-command 的行,请使用反引号 (`) 告诉 PowerShell 继续下一个...

而且我确定您喜欢在删除旧列名的同时保留您正在传输的所有当前数据:)

Import-Csv "ORIGINALFILEPATHHERE" | 
Select-Object -Property *, `
@{name='Dept';expression={$_.Account}},
@{name='Office';expression={$_.Location}} | 
Select-Object -Property * -ExcludeProperty Account,Location|
Export-Csv -Path "EXPORTPATHHERE"  -NoTypeInformation -UseCulture -Force

【讨论】:

  • 即使这样有效,它也被认为是一种非常糟糕的风格。你必须小心后面的勾号。它是 not 续行字符。这是一个逃脱角色。如果你不小心在它后面放了一个空格,它会破坏你的代码。 ;-) 不管那个问题是关于不得到所有的列。 ;-)
  • "重命名列名"
猜你喜欢
  • 2021-03-26
  • 2022-11-02
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多