У меня есть процесс, анализирующий ряд документов CSV и сохраняющий изменения для последующей обработки в базе данных. Когда одна строка (человек) в любом из CSV не найдена в базе данных людей, процесс сохраняет эту запись из CSV. В настоящее время я сохраняю его как строковый вывод хеш-таблицы. Итак, документ CSV
First,Last,Office
Joe,Smith,Detroit
На выходе import-csv "path to my doc.csv"
при использовании отладчика в VS 2015 строка отображается как:
@{First=Joe; Last=Smith; Office=Detroit;}
Он также расширяется до набора ключей / значений:
First | Joe
Last | Smith
Office | Detroit
В PowerShell я могу просто использовать имена объектов в таблице как $obj.First
и двигаться дальше. Но я не могу сохранить эту строку в базе данных и вернуть ее как пригодный для использования объект PowerShell. Я всегда получаю строковый литерал.
Есть ли способ преобразовать эту строку обратно в хеш-таблицу или другую пару ключ / значение?
Я попробовал:
$data = ConvertFrom-String $raw -PropertyNames First,Last,Office
Я пробовал это как для необработанной строки, так и для нее, которая просто возвращает строку с именами свойств в ней. Я также преобразовал исходный хеш в массив:
[string[]]$l_array = $raw | out-string
Затем, когда я конвертирую его обратно с помощью команды ConvertFrom-String
, он фактически сдвигает элементы данных и добавляет ключи в качестве значений.
Спасибо за помощь. Я могу предоставить более подробную информацию или образец кода по мере необходимости.
Изменить Другая сторона этого: как я могу сохранить данные, которые в настоящее время являются PSCustomObject, в лучшем формате, которые я могу перестроить в тот же PSCustomObject? Я подумал, возможно, Export-CSV может сработать, но вы не можете экспортировать в строку. По крайней мере, насколько я могу судить.
Import-Csv
создает массив объектов PSCustomObject, а не хеш-таблицу. Вы можете объяснить, что значит смотреть? Как вы оцениваете результат? - person Dave Sexton   schedule 12.04.2016PSCustomObjects
create не используется так же, как хеш-таблица? Я обновлю пост, чтобы прояснить. - person Tim Meers   schedule 12.04.2016