Comment ajouter des propriétés à un PowerShell objet à partir d'un tableau

J'ai un tableau à deux dimensions de la propriété des noms et des valeurs, que j'ai besoin d'ajouter une PowerShell objet.

Je n'ai PAS de problèmes de la création et affichage d'un objet comme ceci en utilisant New-Object et Ajoutez-Membre:

$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

Comment ajouter des propriétés à un PowerShell objet à partir d'un tableau

Mais quand j'ai essayer quelque chose comme cela:

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

L'Écriture, à la Sortie de $itemobj sera de retour un seul membre de la propriété qui devrait être ajouté sans soigné des noms de colonne.
Le commentaire sur les pièces ont été ajoutés à des fins de test et le retour des valeurs correctes pour tous les éléments.

J'ai aussi essayé

$itemobj | Add-Member NoteProperty $fieldsArray[$k].InternalName.ToString()($fieldsArray[$k].InternalName)

sans aucune amélioration.

Pourquoi les autres membres de la propriété pas ajouté?

J'ai les données dont j'ai besoin. Si j'écris:

for ($k=0; $k -lt $fieldsArray.Count; $k++)
{
    Write-Host $k
    Write-Host $fieldsArray[$k].InternalName.ToString()
    Write-Host $itemki[$j][$fieldsArray[$k].InternalName]
}

J'obtiens:

0 ID 1
1 ContentTypeId 0x0108007345CD807822EA4E85691E5C642f3a27
2 ContentType
3 Titre Task0
4 Modifié 11/24/2014 12:29:30 PM

Et ce sont exactement les valeurs que je m'attends à ce qu'ils veulent. Le problème est de les ajouter en tant que propriétés d'un objet. Je pense que je ne peut pas avoir une variable comme une NotePropertyName, mais c'est un sauvage deviner sur la base des résultats que j'obtiens.

Certaines valeurs dans $itemki[$j][$fieldsArray[$k].InternalName] sont vides - pourrait-il être?

Oublier tous les tableaux. Ils étaient juste pour le contexte:

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

La question est: POURQUOI PAS? Existe-il des restrictions dans Add-Member sur la transmission de valeurs de variables? Des valeurs vides?

Les extraits de code de l'absence de données, de sorte qu'il est difficile de voir ce que vous essayez d'atteindre. Veuillez envisager d'afficher un un Minimum, Complètes et Vérifiables exemple.
Cela semble être une question que vous êtes à l'aide de différents jeux de paramètres. Dans le premier exemple, vous utilisez NotePropertySingleMemberSet mais dans le deuxième vous utilisez MemberSet.
Si on avait des données de l'échantillon sûr que nous pourrions vous dire ce qui est faux. Vous ne nous montrez pas où $j ou $itemobj sont déclarées, mais je suppose que nous pourrions deviner
J'avoue que je suis encore confus à propos de cette question. Il est clair de l'information ici est à partir de SharePoint, mais le premier exemple ne semble pas liée à la seconde. Dans le premier, vous utilisez des fonctions personnalisées IName,SName... qui, en fonction de l'image, de ne pas avoir attendu la sortie que vous montrer à partir de votre montage. Dans votre deuxième exemple $fieldsarray ressemble à ceci: ="ID","ContentTypeID","ContentType","Title","Modified"? Aussi la structure de $itemki est de me faire avoir à deviner les données qui s'y trouve. Ne pas obtenir ce sans plus d'informations. Peut-être juste moi.

OriginalL'auteur grisha | 2015-01-08