Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Blog Technique de Romelard Fabrice

Les dernières Actualités de Romelard Fabrice (Alias fabrice69 ou F___) principalement autour des technologies Microsoft

Actualités

  • Toutes les actualités et informations sur les technologies Microsoft principalement autour de .NET et SQL Server

Archives

SharePoint : Changer la liste cible d’une colonne de type LookUp en PowerShell

Lorsque l’on tranfère du contenu d’un site à un autre via les méthodes “Export/Import” (Cf. différent messages sur ce sujet), un des effets secondaire est le non-fonctionnement des colonnes de type LookUp.

En effet, les Lookup column fonctionne par la référence à l'ID de la colonne cible et lors de l’Export/Import, cet ID n’est plus le même. Ainsi la colonne faisant référence à un contact dans une liste de type calendrier ne marchera plus, car l’ID interne de la liste contact a changé.

La solution est une adaptation de ce qui est expliqué dans le message suivant :

Ainsi le script en question va modifier la valeur de la column (SPField) de type lookUp afin de changer le paramètre "SPFieldLookUp”. Ceci ne peut pas se faire directement, car la propriété n’est pas modifiable en direct, il faut passer par la propriété “SchemaXml”, qui elle est modifiable.

Le script PowerShell permettant ce travail en fournissant le minimum d’information est le suivant :

function Set-SharePointList-LookUpColumn([string]$SiteURL, [string]$ListName, [string]$ColumnName, [string]$ListToLookUp, [string]$ColumnToLookUp)
{
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
    $site = new-object Microsoft.SharePoint.SPSite($SiteURL)
    Write-Host "Site URL:", $SiteURL

    $web = $site.openweb()

    Write-Host " "
    $spList = $web.Lists[$ListName]
    Write-Host "ListName:", $spList.Title

    $myField = $spList.Fields[$ColumnName]
    write-host "LookUp Column Before Change:", $myField.LookupList
    $IDToReplace = $myField.LookupList.ToString()
    Write-Host "IDToReplace:", $IDToReplace
   
    Write-Host " "
    Write-Host " ----------------"
    $LookUpSPList = $web.Lists[$ListToLookUp]
    Write-Host "ListName To LookUp:", $LookUpSPList.Title, "- ID:", $LookUpSPList.ID
    $LookUpmyField = $LookUpSPList.Fields[$ColumnToLookUp]
    write-host "LookUp Column to Set:", $LookUpmyField.InternalName

    Write-Host " ----------------"
    Write-Host " "

    [string] $xml = $myField.SchemaXml;
    #Replace old LookupList ID with new one
    Write-Host " XML Before Change:", $xml.ToString()
    $xml = $xml.Replace($IDToReplace, $LookUpSPList.ID.ToString());

    Write-Host " XML After Change:", $xml.ToString()
    $myField.SchemaXml = $xml;
    $myField.Update()

    $myField.LookupField  = $LookUpmyField.InternalName
    $myField.Update()

    $web.Dispose()
    $site.Dispose()
}

Set-SharePointList-LookUpColumn “http://MySharePointSite/sites/MyCollection/MySubSite” "MyListWithLookUp" "MyColumnWithLookUp" "MyListToLookUp" "MyFieldToLookUp"

Il vous suffit de l’adapter selon votre besoin. Ensuite vous pourrez remettre les valeurs initiales pour les items déjà existant.

Le script est aussi disponible sur le site CodePlex fournissant les scripts d’administration :

Vous pouvez aussi trouver des informations supplémentaires sur le message :

Romelard Fabrice [MVP]

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 21 décembre 2011 16:13 par ROMELARD Fabrice

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Simuler facilement l’envoi de mail par Blog de Jérémy Jeanson le il y a 20 heures et 12 minutes

- ProcDump 6.0 : support du filtrage sur messages d'exceptions .NET, des filtres multiples et du ciblage par nom de service par CoqBlog le 05-20-2013, 14:50

- Votez pour le TOP 10 des influenceurs SharePoint francophones ! par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 12:59

- [Conf’SharePoint] Dernier rappel ! :-) par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:09

- [ #SharePoint 2013 ] les modèles de sites standards… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:03

- 10 erreurs de compréhension concernant SharePoint… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 08:27

- Conf’SharePoint : 10 bonnes raisons pour ne pas la rater par Le petit blog de Pierre / Pierre's little blog le 05-14-2013, 02:24

- [Event] Soirée de lancement Agile .NET France à Lyon par Blog Agile/ALM de Vincent THAVONEKHAM le 05-13-2013, 01:29

- .NET / Debug : inspection de la mémoire d'applications .NET (dump ou processus live) : première livraison d'une librairie .NET par Microsoft par CoqBlog le 05-11-2013, 22:21

- SharePoint : Incompatibilité avec Internet Explorer 10 (IE10) par Blog Technique de Romelard Fabrice le 05-08-2013, 16:29