Powershell: расчетное свойство не работает должным образом - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть CSV-файл, в котором мне нужно добавить новый столбец. Я делаю это с помощью import-csv, а затем добавляю свойство к объектам, прежде чем записать его обратно в csv с помощью export-csv.

Каким-то образом это не работает, как ожидалось. Я взял всю реальную функциональность и сократил ее до следующего фрагмента:

$findReplaceList = Import-Csv -Path $mappingListPath -Delimiter ';'

Import-Csv $sourceFile.FullName | 
            Select-Object *, @{Name = 'column3'; Expression = 
                { $newKey = $_."Issue key" ; $newKey } 
            } | 
            Export-Csv $outputFullFileName -NoTypeInformation -Delimiter ';'

обратите внимание, что в этом коде реальный расчет выражения заменен чем-то очень простым.

здесь,с

$newKey = $_."Issue key"

Я просто пытаюсь взять значение в столбце «ключ выпуска» и использовать его для вновь добавленного столбца.

Каким-то образом $ newKey всегда равен NULL - хотя $ _. «Ключом выдачи» не является?

Что я делаю не так? Реальный код для $ newKey будет выглядеть следующим образом:

{$newKey = $_.$FieldsToSelectFromTargetFilesIntoMappingFile[0]; (@($findReplaceList).where( { $_.$FieldsToSelectFromTargetFilesIntoMappingFile[0] -eq $newKey })).$FieldsToSelectFromTargetFilesIntoMappingFile[3] } 

Файл отображения (ссылка на $ mappingListPath) представляет собой простой CSV-файл, подобный следующему:

изображение таблицы простого примера отображения

1 Ответ

0 голосов
/ 02 ноября 2019

Проблема решена. Благодаря всем комментариям и образцу рабочего кода от @Bender я смог выявить проблему с моим кодом: файл отображения csv содержит ';'в качестве разделителей ... С помощью кода я написал различные «столбцы» в CSV, где они не определены как таковые, но каждая строка была просто записана в одно свойство.

Путем изменения

Import-Csv $sourceFile.FullName | 

на

Import-Csv $sourceFile.FullName -delimiter ';' | 

проблема была решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...