Freitag, 6. Mai 2016

Powershell Scripts - Content Types zu Listen hinzufügen



In manchen Szenarien kann es hilfreich sein, automatisiert zu bestehenden Listen / Bibliotheken Inhaltstypen hinzuzufügen. Für solche und viele andere Anwendungsfälle eignet sich wie so oft ein Powershell Skript. 

Ein Beispiel eines solchen Skripts finden Sie nachfolgend. Das Skript durchläuft alle Websites in der angegebenen SiteCollection und fügt die zwei angegebenen Inhaltstypen allen Dokumentenbibliotheken hinzu.

Das Skript funktioniert mit SharePoint 2013 (Foundation + Server)

  

#--------------------------- Add Content Type ------------------------#
#Get site object and
#specify name of the content type to look for in each library

$site = Get-SPSite http://URL/
$newtype1 = "NAME CONTENT TYPE 1"
$oldtype1 = "Dokument"

#Walk through each site in the site collection
$site | Get-SPWeb -Limit all | ForEach-Object {

write-host "Checking site:"$_.Title
                               $_.ContentTypesEnabled = $true
#Go through each document library in the site
$_.Lists | where { $_.BaseTemplate -eq "DocumentLibrary" } | ForEach-Object {
$doclibs = $_.Lists | where { $_.BaseTemplate -eq "DocumentLibrary" }
for ($i = 0; $i -lt $doclibs.Count; $i++) {
$item = $doclibs[$i]
write-host "Checking list:"$item.Title


#Add site content types to the list
if (($item.ContentTypes | where { $_.Name -eq $newtype1}) -eq $null)
{
$ctToAdd = $site.RootWeb.ContentTypes[$newtype1]
$ct = $item.ContentTypes.Add($ctToAdd)
write-host "Content type" $newtype1 "added to list" $item.Title
}
else
{
write-host "Content type" $newtype1 "already exists in" $item.Title
}

$folder = $item.RootFolder
$ctypes=New-Object System.CollectionsGeneric.List[Microsoft.SharePoint.SPContentType]
foreach ($ct in $item.ContentTypes)
{
if ($ct.Name.Contains($newtype1))
{
$ctypes.Add($ct)
}
}
#$ctypes.Add($site.RootWeb.ContentTypes[$newtype1])
$folder.UniqueContentTypeOrder = $ctypes
$folder.Update();

$item.ContentTypesEnabled = $True;
$item.Update()
}
}
}
#Dispose of the site object
$site.Dispose()
 

  
Als erfahrener SharePoint Dienstleister haben wir viel Erfahrung im Einsatz von Powershell Skripten. Andere Funktionen aus unserem Fundus sind beispielsweise Skripte zum Exportieren von Inhaltstypen in XML, zum Erweitern der Navigation, Personal mySites Anlage oder alternative Sprachpakete aktivieren.

Sollten Sie Fragen dazu haben oder einen konkreten Bedarf, wenden Sie sich gerne an unsere Berater.

Keine Kommentare:

Kommentar veröffentlichen