【问题标题】:Powershell Import-csv bugPowershell 导入-csv 错误
【发布时间】:2019-07-24 00:53:36
【问题描述】:

我正在尝试将 import-csv 与 -erroraction SilentlyContinue 一起使用,但是当文件导入时它仍然会引发错误:

Import-Csv : The member "Id" is already present.
At C:\Users\admin\Desktop\Parse.ps1:65 char:24
+ ...  $csvData = Import-Csv -LiteralPath $file.FullName -ErrorAction Silen ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Import-Csv], ExtendedTypeSystemException
    + FullyQualifiedErrorId : AlreadyPresentPSMemberInfoInternalCollectionAdd,Microsoft.PowerShell.Commands.ImportCsvCommand

我也尝试过设置 Erroractionpreference 但它仍然抛出错误。

还有其他人看到过这个或知道如何绕过它吗?

【问题讨论】:

  • 您的 CSV 文件是否有两个同名的列/标题?由于这是一个终止错误,您可以使用 try-catch 使其消失。
  • 是的,我知道根本原因.. 下一行是 IF($error) 然后我通过将第一行拆分为标题并重命名重复项并添加一个数字来解析 CSV。 Try/catch 虽然有效,所以如果您将评论作为解决方案发布,我会接受它。

标签: powershell csv


【解决方案1】:

您的 CSV 似乎有多个具有相同值的标题。您看到的错误是终止错误。 -ErrorAction$ErrorActionPreference 不会改变终止错误的行为。您可以使用try-catch 来响应终止错误。

try {
    $csvData = Import-Csv -LiteralPath $file.FullName
}
catch {
    # Add response code here
}

在某些情况下,-ErrorAction 用于终止非终止错误,以便从终止错误的角度进行错误和异常处理。

请参阅About Preference Variables 了解$ErrorActionPreference 变量和公共参数ErrorAction 的预期用法。

【讨论】:

  • 啊,这很有意义。我不知道终止错误不会受到错误操作的影响。谢谢!!
猜你喜欢
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
  • 2015-11-21
  • 2016-07-10
相关资源
最近更新 更多