code it

Martins Tech Blog

Anonymen Zugriff in SharePoint mit PowerShell aktivieren

Um auf einer Site Collection anonymen Zugriff zu aktivieren, sind mehrere Schritte notwendig: Zunächst muss in der Central Administration grundsätzlich der anonyme Zugriff auf der Webanwendung aktiviert werden.

Im Anschluss daran kann man auf den gewünschten Site Collections dieser Webanwendung definieren, ob hier die komplette Site Collection oder Listen anonym erreichbar sein sollen, oder ob dieses Feature ganz unterbunden wird.

Eine gute Beschreibung, wie man der Reihe nach vorgehen muss, um diese Einstellungen über die Weboberfläche vorzunehmen, findet man im Post von Randy Drisgill.

Was über die Benutzeroberfläche geht, geht auch über die PowerShell - dem Tool der Wahl für die Administration des SharePoint über die Kommandozeile, allerdings sind die Einstellungen gut versteckt.

Um die Einstellungen in der Central Administration per Kommandozeile durchzuführen, sind ist das Cmdlet GET-SPWebApplication von zentraler Bedeutung. Ist das passende Objekt vom Typ SPWebApplication dann ermittelt, kann man darüber die SPIisSettings ermitteln, in denen der anonyme Zugriff gesetzt werden kann. Laut MSDN ist im Anschluss noch ein Re-Provisioning notwendig, damit sämtliche Frontendserver aktualisiert werden.

Nach diesem Schritt kann in den gewünschten SPSiteCollections die Eigenschaft AnonymousState des RootWebs auf On gesetzt werden. Hier schlägt die in diesem Punkt gewöhnungsbedüftige Syntax der PowerShell zu, nach der sogenannte Nested Types (wie es SPWeb.WebAnonymousState ist) nicht mit dem ".", sondern mit einem "+" dargestellt werden.

Start-SPAssignment -Global;

# set anonymous access in webapp
$webapp = Get-SPWebApplication "http://myserver";
$webAppZone = [Microsoft.SharePoint.Administration.SPUrlZone]::Default;
$webappsettings = $webapp.GetIisSettingsWithFallback($webAppZone);
$webappsettings.AllowAnonymous = $true;
$webapp.Update()
$webapp.Provision()

# set anonymous access in website
$site = Get-SPSite "http://myserver/sites/mytest";
$web = $site.RootWeb;
$web.AnonymousState = [Microsoft.SharePoint.SPWeb+WebAnonymousState]::On;
$web.Update();

Stop-SPAssignment -Global;

Weiß man all diese Hürden zu umschiffen, hat man im Anschluss ein anonym zugreifbares Portal.

PowerShell: Batch-Umbennennen von Dateien

Vom Übersetzer bekam ich für ein Projekt Sprachressourcen für die Benutzeroberfläche geliefert - allerdings hatte dieser nicht nur den Inhalt geändert, sondern auch in jedem Dateinamen vor der Erweiterung das Sprachkürzel eingefügt. Um wieder die originalen Dateinamen zu erhalten - also z.B. aus Form1it.xml wieder Form1.xml - hätte ich also jeden dieser Dateinamen editieren müssen. Und genau für solche einfachen Jobs eignet sich PowerShell recht gut.

get-childitem -Path *.* | rename-item -newName {$_.name -replace "it.xml", ".xml"}

Mit einer geschickten Kombination aus get-childitem und rename-item per Pipe konnte das Problem schnell gelöst werden.