Heute habe ich in einer Liste eine Formel zur Validierung eines Listenelementes einbauen wollen („List Settings“->“Validation Settings“).
Die Formel sollte sicherstellen, dass nur Elemente gespeichert werden können, bei denen das Anfgangsdatum kleiner ist als das Enddatum und dass beide Daten im selben Jahr liegen.
Nach einigem analysieren und suche im Internet bin ich auf eine Seite gestossen, welche den Fehler beschreibt.
Scheinbar sind die Formeln abhängig von der Sprache des Betriebssystems (des Servers), sowie der gewählten Regionaleinstellungen. Auf dem Server war folgendes Listen-Trennzeichen eingestellt:
Das Trennzeichen für die verschiedenen Unterformeln musste also von „,“ auf „;“ gewechselt werden, was folgende Formel ergab:
Wenn man alle Listen-Elemente einer SharePoint-Liste löschen möchte, dann kann das manuelle Löschen mittels Browser sehr umständlich sein. Selbst in der Datasheet-View ist es sehr mühsam alle Elemente auf einen Schlag zu löschen, da bei grosser Anzahl an Elementen Timeouts auftreten können. Leider fehlt im GUI eine benutzerfreundliche Option im Sinne von „Lösche alle Elemente dieser Liste“.
Mit einem PowerShell-Skript kann man dies Vorhaben jedoch ziemlich einfach und nerven-schonend durchführen:
[System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")
# "Enter the site URL here"
$SITEURL = "http://siteCollectionUrl"
$site = new-object Microsoft.SharePoint.SPSite ( $SITEURL )
$web = $site.OpenWeb()
"Web is : " + $web.Title
# Enter name of the List below
$oList = $web.Lists["InternalListName"];
"List is :" + $oList.Title + " with item count " + $oList.ItemCount
$collListItems = $oList.Items;
$count = $collListItems.Count - 1
for($intIndex = $count; $intIndex -gt -1; $intIndex--)
{
"Deleting : " + $intIndex
$collListItems.Delete($intIndex);
}
Das Skript in einer „ps1“-Datei speichern (z.B. „DeleteAllListElements.ps1“), darin den URL der „Site Collection“ den internen Listennamen anpassen, danach direkt ausführen um die Elemente zu löschen.
Möchte man alle Elemente, einschliesslich aller Ordner und aller Elemente in Ordnern/Unterordnern löschen, so kann man das folgende PowerShell-Skript verwenden (auch hier muss man den URL und den Listennamen anpassen):