Die ersten Schritte mit PowerShell und SharePoint 2010

SharePoint 2010 benutzt, genau wie Exchange Server seit Version 2007, die PowerShell als das primäre Administrationswerkzeug (Stsadm wird es weiterhin geben, wenngleich die meisten SharePoint-Admins früher oder später die PowerShell bevorzugen dürften). Insgesamt wird es 642 Cmdlets für die SharePoint-Administration geben, die durch das PSSnapin Microsoft.SharePoint.PowerShell zur Verfügung gestellt werden (in der aktuellen Beta 2 sind es „nur“ 535).

Wer, wie ich, nicht gerade der SharePoint-Experte ist was Administration und andere Details angeht, wird sich erst einmal einen Überblick verschaffen wollen. Grundsätzlich ist das kein Problem, da es gerade ein Vorteil der PowerShell ist, mit Hilfe kleiner Abfragen etwas auszuprobieren und damit mehr über ein komplexes Gebilde, wie es SharePoint definitiv ist, zu lernen. Ein Problem ist nur, dass es nicht nur viele Cmdlets gibt, die involvierten Objekte besitzen im Allgemeinen auch sehr viele Members. Ein harmloser Befehl wie

Get-SpWeb –Identity http://pmserver2010

liefert zwar nur die Url zurück, doch dahinter steckt ein Objekt mit 207 Members.

Um herauszufinden, welche Properties welche Informationen liefern kann man sich natürlich ausführlich mit der Referenz des SharePoint-Objektmodells beschäftigen. Ein wenig schneller geht es, wenn man auch dafür die PowerShell verwendet und z.B. die Werte von Properties nach bestimmten Werten durchsucht, um auf diese Weise eine Beziehung zu einem Element eines SharePoint-Webs, wie einer Seite, herzustellen zu können. Ein

Get-SpWeb –Identity http://pmserver2010 | Select *

zeigt zwar alle Property-Members mit ihren Werten an, doch dahinter steckt lediglich ein Objekt, so dass sich die Properties nicht so ohne weiteres einzeln ansprechen lassen. Möchte man das tun, benötigt man erst einmal das Type-Objekt, das stets das GetType()-Methodenmember liefert:

Get-Spweb -identity http://pmserver2010 | Select { $_.GetType() }

Das Type-Objekt besitzt u.a. ein GetProperties-Methodenmember, das alle Property-Members liefert:

Get-Spweb -identity http://pmserver2010 | Select { $_.GetType().GetProperties() }

Der Befehl führt aber nicht weiter, da hier ein Objekt vom Typ SpWeb resultiert, das nur ein Property-Member besitzt, das alle Properties zusammenfasst.

Der folgende Befehl listet die Namen aller Properties auf:

Get-Spweb -identity http://pmserver2010 | & { process { $_.GetType().GetProperties() } } | Select Name

Um auch an den Wert heranzukommen, muss die GetValue-Methode aufgerufen warden, die allerdings noch einmal das Objekt erwartet, dessen Members geliefert werden sollen (sowie einen zweiten Parameter, für den $null übergeben wird):

Get-Spweb -identity http://pmserver2010 | & { process { $Script:Web=$_;$_.GetType().GetProperties() } } | Select Name, @{Name=“Value“;Expression={$_.GetValue($Web, $null) } }

Damit lassen sich die Werte der Property-Members durchsuchen. Der folgende Befehl listet alle Properties auf, deren Wert ein „Homepage“ enthält:

Get-spweb -identity http://pmserver2010 | & { process { $Script:Web=$_;$_.GetType().GetProperties() } } | Select Name, @{Name=“Value“;Expression={$_.GetValue($Web, $null) } } | Where { $_.Value -like „*Homepage*“ }

Name Value
—- —–
Title Homepage
Groups {Anzeigende Benutzer, Besitzer von Homepage, Besucher vo…
SiteGroups {Anzeigende Benutzer, Besitzer von Homepage, Besucher vo…
FirstUniqueRoleDefinitionWeb Homepage
FirstUniqueAncestorWeb Homepage
FirstUniqueAncestorSecurableObject Homepage
AssociatedOwnerGroup Besitzer von Homepage
AssociatedMemberGroup Mitglieder von Homepage
AssociatedVisitorGroup Besucher von Homepage
AssociatedGroups {Mitglieder von Homepage, Besucher von Homepage, Besitze…
FirstUniqueAncestor Homepage

PS: Dieser Blog-Eintrag direkt aus Word 2010 (Beta 2, mit Word 2007 würde es genauso funktionieren) geschrieben und veröffentlicht. Nachdem das WordPress-Blog innerhalb von Word registriert wurde, muss der Text nur noch veröffentlicht werden. Damit das alles möglich ist, muss lediglich die Blog-Vorlage gewählt werden. Der Vorteil ist, dass Formatvorlagen zur Verfügung stehen. Ein Nachteil, dass es keine Vorschau gibt.

 

 

 

 

Advertisements

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s