PowerShell PSCustomObject редактирование контента - PullRequest
0 голосов
/ 18 мая 2018

Я успешно импортирую файл CSV и хочу изменить одно значение в массиве PSObject $ds.

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

Это не работает и ничего больше.Это должно быть очень легко, я думаю.Но как?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вам необходимо получить доступ к правильному элементу в массиве.Массив здесь равен $ds, поскольку он содержит один объект на строку.Каждая строка имеет свойство B, которое вы можете прочитать и установить.Это будет работать:

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

Что может вас смущать, так это то, что $ds.b[1] фактически возвращает 44 при использовании PowerShell 3.0 или более поздней версии.Это связано с функцией, называемой перечислением членов, где $ds.B возвращает значение B для каждого объекта в массиве, а затем [1] выбирает второе значение, равное 44.Важно знать, что перечисление членов возвращает коллекцию только для чтения , поэтому вы не можете изменять значения таким образом.

0 голосов
/ 18 мая 2018

Я не знаю, почему это не работает.

Однако это работает:

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