Leseberechtigungen auf die TaxonomyHiddenList per Powershell setzen
Heute mal ein etwas technischer Beitrag. In einem Sharepoint Projekt, stieß ich auf folgendes Problem. Die Nutzer sahen in den diversen Listen keine Werte mehr in den Spalten, deren Inhalte auf Taxonomie Feldern basierten. Nach einiger Recherche stieß ich auf diesen Artikel.
Genau das war auch bei der mir vorliegenden Konstellation der Fall. Wenn ich die Liste unter http://<SERVERURL>/Lists/TaxonomyHiddenList/ aufrief, durfte ich aufgrund fehlender Berechtigungen nicht darauf zugreifen. Über den administrativen Benutzer konnte ich dann über die Listeneinstellung sehen, dass keine Berechtigungen vorlagen. Sobald ich diese händisch nachgetragen hatte, waren die Werte der Taxonomiespalten wie erwartet sichtbar.
Da aber die komplette Provisionierung der Site Collections in meinem Fall deklarativ über Webtemplates und Powershell erfolgt, ist der manuelle Weg über die Sharepoint UI nicht machbar. Auf Anhieb habe ich keine Beispiellösung gefunden, die meinen Fall abdeckt, darum zeige ich hier mal den von mir gewählten Weg.
Im Grunde war es für mich nur nötig, mein bestehendes Powershell Script um eine Funktion zu erweitern, die der TaxonomyHiddenList eine Leseberechtigung für alle Domain User einrichtet. Und so sieht meine Script aus:
function Set-TaxonomyHiddenList-Permission { PARAM ( [string] $siteUrl ) END { try { $web = Get-SPWeb $siteUrl $accountName = "<DOMAIN_NAME>\domain users" $domainUsers = $web.EnsureUser($accountName) $list = $web.Lists | Where {$_.Title -eq "TaxonomyHiddenList"} $roleAssignment = New-Object Microsoft.SharePoint.SPRoleAssignment($domainUsers) $roleDefinition = $web.RoleDefinition["UserGroupName_With_ReadOnly_Rights"] $roleAssignment.RoleDefinitionBindings.Add($roleDefinition) $list.RoleAssignment.Add($roleAssignment) $list.Update() $web.Dispose() } catch { Write-Host "Error occured while updating roles" } } }