SearchNetworking PowerShell-Corner

SharePoint-Zugriff mit der PowerShell

05.08.2008 | Autor / Redakteur: Markus Widl / Andreas Donner

Vorhandene Listen und Bibliotheken ermitteln

Um nun alle in der Website enthaltenen Listen und Bibliotheken zu ermitteln, wird die Eigenschaft Lists des SPWeb-Objekts ausgewertet:

$web.lists | format-table title

Über das Cmdlet format-table wird nur der jeweilige Titel ausgegeben. Es lohnt sich aber zur genaueren Analyse diese Filterung wegzulassen. Das Ergebnis ist eine umfangreiche Ausgabe der SPWeb-Eigenschaften.

Zugriff auf den Inhalt einer Liste

Als Nächstes sollen bestimmte Felder (Spalten) einer Liste ausgegeben werden. Im Beispiel wird auf die in jeder Team-Website standardmäßig vorhandene Liste „Announcements“ zugegriffen und von den Listenelementen die Felder Titel und Body (der Ankündigungstext) geliefert.

$list = $web.lists[„Announcements“]
$list.items | foreach { $_[„Title“] + „`n“ + $_[„Body“] }

In der ersten Zeile wird ein SPList-Objekt der gewünschten Liste erzeugt. Die folgende Zeile wertet von diesem Objekt die Eigenschaft Items aus. Über die Schleife erfolgt die Ausgabe.

Neue Listenelemente anlegen

Beim Anlegen eines neuen Listenelements kommt wieder die eben verwendete Items-Eigenschaft zum Einsatz. Darüber hinaus kann mit der Add-Methode ein neues Listenelement erzeugt werden (Klasse SPListItem). In diesem Objekt werden alle gewünschten Eigenschaften gesetzt und zum Schluss über die Update-Methode gespeichert. Der Aufruf dieser Methode darf nicht vergessen werden, da sonst das neue Element nicht angelegt wird. Im Beispiel wird eine neue Ankündigung samt Ablaufdatum angelegt, die neue Ankündigung ist sofort in der Liste ersichtlich.

$item = $list.items.add()
$item[„Title“] = „Neue Ankündigung“
$item[„Body“] = „Ankündigungstext“
$item[„Expires“] = [DateTime]“01/01/2009“
$item.Update()

Vorhandene Listenelemente ändern und löschen

Über einen ähnlichen Weg können vorhandene Listenelemente geändert werden. Zunächst wird das betroffene Element ermittelt. Dies kann etwa durch eine Filterung mit dem Cmdlet where-object erfolgen.

$item = $list.items | where-object { $_[„Title“] -eq „Neue Ankündigung“ }

Danach folgen die Änderung und ebenfalls ein abschließendes Update:

$item[„Body“] = „Neuer Ankündigungstext“
$item.Update()
Mit diesem Verfahren kann ein Listenelement auch gelöscht oder in den Papierkorb gelegt werden:
$item.Delete()
$item.Recycle()

Dateiupload im Bulkverfahren

In einem abschließenden Beispiel sollen alle Dateien eines Ordners in der Dokumentenbibliothek „Shared Documents“ abgelegt werden. Hierbei kommt keine SharePoint-Klasse zum Einsatz, sondern die Klasse Net.WebClient des .NET-Frameworks. Das Beispiel ist dadurch auch von Clients aus verwendbar. Zunächst wird ein WebClient-Objekt angelegt:

$webclient = new-object Net.WebClient

Um den Dateiupload durchführen zu können, muss eine Authentifizierung erfolgen. Mit diesem Befehl werden die „Credentials“ des aktuellen Benutzers verwendet:

$webclient.Credentials = [System.Net.CredentialCache]::DefaultCredentials

Dann folgt der eigentliche Upload. Zunächst werden alle Dateien des aktuellen Ordners über das PowerShell-Cmdlet get-childitem ermittelt und in der Pipeline über eine Schleife verarbeitet. Für jede Datei wird die Methode UploadFile der WebClient-Klasse aufgerufen:

get-childitem | foreach { $webclient.UploadFile((„http://local host/Shared Documents/“ + $_.Name), „PUT“, $_.FullName) }

Mit diesen Befehlszeilen lassen sich schnell viele Dateien in einer Dokumentenbibliothek ablegen.

Die gezeigten Beispiele decken nur einen kleinen Teil der Funktionalität des SharePoint-Objektmodells ab. Geneigte Leser finden unter dem unten angegeben Link die Dokumentation der Klassen und viele Anregung für den weiteren Einsatz.

Inhalt des Artikels:

zurück »1 »2

Kommentar zu diesem Artikel

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)



Spamschutz 

Bitte geben Sie das Resultat dieser Rechenaufgabe (Addition) ein:
Kommentar abschicken

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 2014459)