【问题标题】:PowerShell PSCustomObject content editingPowerShell PSCustomObject 内容编辑
【发布时间】:2018-05-18 10:48:59
【问题描述】:

我成功导入了一个 CSV 文件,想更改 PSObject 数组 $ds 中的一个值。

$ds = Import-Csv test.csv -UseCulture
#test.csv content
#A;B
#11;22
#33;44
$ds
$ds.B[1] = 9
$ds

这不起作用,也没有别的。 我猜这应该很容易。 但是怎么做呢?

【问题讨论】:

    标签: powershell csv pscustomobject


    【解决方案1】:

    您需要访问数组中的正确元素。这里的数组是$ds,因为它每行包含一个对象。每行都有一个您可以读取和设置的B-property。这将起作用:

    #Modify second row's B-value (44) to 9
    $ds[1].B = 9
    

    您可能会感到困惑的是,$ds.b[1] 在使用 PowerShell 3.0 或更高版本时实际上会返回 44。这是因为一个称为成员枚举的功能,其中$ds.B 将为数组中的每个对象返回B-值,然后[1] 选择第二个值44。重要的是要知道成员枚举按设计返回一个只读集合,因此您不能以这种方式修改值。

    【讨论】:

      【解决方案2】:

      我不知道为什么这不起作用。

      这确实有效,但是:

      $ds = import-csv test.csv -UseCulture
      #test.csv content
      #A;B
      #11;22
      #33;44
      $ds
      $ds[1].B = 9
      $ds
      

      【讨论】:

      • 您使用不同的文化设置
      • @mazzy 嗯?他使用不同的技术来获取价值,这就是它起作用的原因。他的文化设置不会影响他的答案。
      • 应该提到我的意思是“我不知道为什么这不起作用”我的意思是我不知道为什么访问行然后值确实有效但访问列然后值没有。 @FrodeF。答案虽然填补了这一点:)
      猜你喜欢
      • 2013-05-09
      • 1970-01-01
      • 2020-08-25
      • 2013-03-05
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多