Living a SharePoint life

Tuesday, July 16, 2013

Property Bags in SharePoint mit der PowerShell konfigurieren

Ein Property bag in SharePoint ist eine Key/Value Speicher um verschiedenste Informationen in der Site zu speichern. Jede Site verwaltet seinen eigenen Property bag. Der normale Anwender wird diese Informationen nicht zu Gesicht bekommen und auch der Admin hat über die Zentral Administration keine Möglichkeit die Werte in dem Property bag zu verändern. Natürlich könnte ein Entwickler eine solche Komponente bereitstellen, aber das ist ein anderes Thema.

Warum ist die also der Property bag für den Administrator von Interesse? In größeren SharePoint Installationen möchte ich als IT-Professional wissen, wer wann welche Site bestellt hat. Diese Person nenne ich normalerweise den Site Owner. Der Site Owner ist die Person, welche letztlich entscheidet was mit der Site passiert.

Wir benötigen eine Zuordnung von Site Owner zur Site. Eine Möglichkeit wäre z.B. eine Liste zu führen und dort alle URLs und Kontaktdaten der Personen eintragen. Das wäre aber nicht die Art und Weise wie wir eigentlich mit SharePoint arbeiten. In SharePoint arbeiten wir mit Metainformationen und daher wäre es nur logisch, wenn der Site Owner eine Eigenschaft der Site wäre. Mit dem Property bag können wir genau das erreichen.

Als erstes setzten wir den Kontext auf die Site mit der wir arbeiten wollen:
$web = Get-SPWeb http://host.domain.tld/
Wir können uns alle vorhandenen Eigenschaften im Property bag anzeigen lassen:
$web.Properties
Um eine eigene Eigenschaft hinzu zu fügen, können wir die Methode Add() verwenden. Dabei nimmt die Methode zwei Parameter entgegen. Den Key und den Value.
Es spielt dabei keine Rolle, ob der Key Groß- und Kleinbuchstaben verwendet. Der Key wird automatisch in Kleinbuchstaben gewandelt.
$web.Properties.Add(“Key”, “Value”)
Um einen vorhandenen Key zu entfernen verwendet man die Methode Remove():
$web.Properties.remove(“Key”)
Änderungen die bisher am Property bag vorgenommen wurden sind nicht permanent und gehen verloren sobald die PowerShell Session beendet wird. Damit die Änderungen auch übernommen werden, muss der Property bag mittels der Methode Update() gespeichert werden.
$web.Properties.Update()
Vielleicht fallen euch noch andere Fälle ein bei dem man den Property bag gebrauchen kann. Postet eure Ideen einfach bei den Kommentaren.

No comments:

Post a Comment

Featured Post

The Retro Powershell - Looking good in 8-Bit | Part 1

I wrote a little script that, when placed in your PowerShell Profile, will print a message similar to the old boot message you got from you...