Das Problem

Manchmal kommt es vor, dass man eine Websitespalte ändern möchte, die man aber nicht löschen kann oder will und somit eine Neuanlage nicht in Frage kommt.

Handelt es sich dabei um ein Lookup, ist das mit der Oberfläche nicht möglich. Die PowerShell und die  SharePoint-Client Umgebung machen's möglich.

Die Lösung

Die Voraussetzungen sind die selben wie in meinen anderen beiden Artikeln zu diesem Thema, Aufspüren von FieldReferences in SharePoint 365 mit Hilfe der PowerShell und Provisioning von Websitespalten mit Hilfe von PowerShell.

Bitte die Voraussetzungen dort nachlesen!

Wenn man ein Lookup ändern möchte, weil die Liste, auf die das Lookup zeigt, nicht (mehr) existiert, dann ist das am einfachsten, wenn man die Ziel-Website mit dem SharePoint-Designer öffnet und die Eigenschaften der Liste dort einblendet. Hier werden alle IDs, die benötigt werden, übersichtlich angezeigt und können dort wegkopiert werden.

Das Script

[System.Reflection.Assembly]::LoadFrom("C:TempMicrosoft.SharePoint.Client.dll")
# define target SPO site collection and credentials to connect with
$siteUrl = “https://<target>.sharepoint.com/”
$username = "<userName>"
$password = Read-Host -Prompt "Enter password" -AsSecureString

# connect and authenticate to SPO
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password)
$ctx.Credentials = $credentials

# retrieve all site columns (fields)
$web = $ctx.Web
$ctx.Load($web)
$fields = $web.Fields
$ctx.Load($web)
$ctx.Load($fields)
$ctx.ExecuteQuery()

$fields = $fields  | Where {$_.Group -eq "MeineSpalten"}

foreach($field in $fields)
{     
    if ($field.InternalName -eq 'Kunde')
    {
        write-host $field.Id, $field.InternalName, $field.SchemaXml
        $field.SchemaXml = $field.SchemaXml.Replace('{6625b448-5067-4da8-95de-d89effc31945}', '{C8AF4D59-4B68-42A6-A78F-7DA89B09ACAA}')
        $field.Update()
        $ctx.ExecuteQuery()
    }
}

Ist doch cool, oder?

LG,
Sabine