У меня есть двумерный массив имен и значений свойств, которые мне нужно добавить в объект PowerShell.Как добавить свойства к объекту PowerShell из массива
У меня нет вопросов, не создания и отображения объекта, как это с помощью New-Object и Add-Member:
$obj = New-Object PSObject
$obj | Add-Member NoteProperty IName($fiel.IName)
$obj | Add-Member NoteProperty SName($fiel.SName)
$obj | Add-Member NoteProperty Taggy($fiel.Taggy)
$obj | Add-Member NoteProperty Title($fiel.Title)
Write-Output $obj
Но когда я пытаюсь что-то вроде этого:
for ($k=0; $k -lt $fieldsArray.Count; $k++)
{
$itemobj | Add-Member –MemberType NoteProperty –Name $fieldsArray[$k].InternalName –Value $itemki[$j][$fieldsArray[$k].InternalName]
#Write-Host $k
#Write-Host $fieldsArray[$k].InternalName.ToString()
#Write-Host $itemki[$j][$fieldsArray[$k].InternalName]
}
Write-Output $itemobj
от записи Вывод $ itemobj возвращает только один элемент свойства, который должен быть добавлен без каких-либо опрятных имен столбцов.
Прокомментированные части были добавлены для целей тестирования и вернули правильные значения для всех элементов.
Я также попытался
$itemobj | Add-Member NoteProperty $fieldsArray[$k].InternalName.ToString()($fieldsArray[$k].InternalName)
без каких-либо улучшений.
Почему другие участники не добавлены?
У меня есть данные, которые мне нужны. Если я пишу:
for ($k=0; $k -lt $fieldsArray.Count; $k++)
{
Write-Host $k
Write-Host $fieldsArray[$k].InternalName.ToString()
Write-Host $itemki[$j][$fieldsArray[$k].InternalName]
}
я получаю:
ID 1
ContentTypeId 0x0108007345CD807822EA4E85691E5C642F3A27
ТипСодержимого
Название Task0
Изменено 24.11.2012 12:29:30 PM
И это именно те значения, которые я ожидаю и хочу. Проблема заключается в добавлении их в качестве свойств объекта. Я думаю, что у меня не может быть переменной как NotePropertyName
, но это дикое предположение, основанное на результатах, которые я получаю.
Некоторые из значений в $ itemki [$ j] [$ fieldsArray [$ k] .InternalName] пусты - не так ли?
Забудьте все массивы. Они были предназначены только для контекста:
Write-Host $fieldsArray[$k].InternalName.ToString() # Writes out the correct value
Write-Host $itemki[$j][$fieldsArray[$k].InternalName] # writes out the correct value
$itemobj | Add-Member NoteProperty $fieldsArray[$k].InternalName.ToString()($fieldsArray[$k].InternalName) # The values/property are not added
Вопрос: ПОЧЕМУ? Существуют ли какие-либо ограничения в Add-Member
при передаче значений в качестве переменных? Пустые значения?
В фрагментах кода отсутствуют данные, поэтому трудно понять, чего вы пытаетесь достичь. Пожалуйста, рассмотрите публикацию [Минимальный, Полный и Подтверждаемый пример] (http://stackoverflow.com/help/mcve). – vonPryz
Это, по-видимому, проблема в том, что вы используете разные наборы параметров. В первом примере вы используете 'NotePropertySingleMemberSet', а во втором вы используете' MemberSet'. – Matt
Если бы у нас были некоторые данные примера, мы могли бы рассказать вам, что не так. Вы не показываете нам, где объявлены '$ j' или' $ itemobj', но я предполагаю, что мы могли бы предположить – Matt