Below script will work for
1. 1. Add Content Types to the web site
a.
Create a Content Type
b.
Add fields to Content Type
c.
Modify existing fields of Content Type
d.
Delete fields from Content Type
e.
Create a new field and then add to the content
type
2. 2. Add Content Type to the SharePoint List
3.
3. Sorting Content Types in the List
I referred below posts
Start-SPAssignment -Global
function Sort-ContentTypes(
[Microsoft.SharePoint.SPList]$list) {
Write-Host $list.Title
$rootFolder = $list.RootFolder
$DefaultContentTypeName = "Document" #setting "Document" as default
content type.
$rootFolder.UniqueContentTypeOrder
= $null
$rootFolder.Update()
#Get content types fromt the
button
$contentTypesInPlace = New-Object 'System.Collections.Generic.List[Microsoft.SharePoint.SPContentType]'
$contentTypesInPlace = $rootFolder.ContentTypeOrder
#Has a default content type name
been specified?
if ($DefaultContentTypeName)
{
$contentType = $contentTypesInPlace | where { $_.Name -eq $DefaultContentTypeName }
if ($contentType -ne $null)
{
#Add the default
content type
$sortedListOfContentTypes = New-Object 'System.Collections.Generic.List[Microsoft.SharePoint.SPContentType]'
$sortedListOfContentTypes += $list.ContentTypes[$DefaultContentTypeName]
#Remove the
default content type from the list
$contentTypesInPlace = $contentTypesInPlace | where {$_.Name -ne $DefaultContentTypeName}
}
else
{
Write-Error "$DefaultContentTypeName
was not found in the list, sorting by Name alone"
}
}
else
{
Write-host "No
default content type specified"
}
#sort the
remaining content types and add the sorted list
foreach ($contentType in $($contentTypesInPlace | Sort-Object -Property Name ))
{
#Add the content
types
$sortedListOfContentTypes = [Microsoft.SharePoint.SPContentType[]] $sortedListOfContentTypes + $contentType
}
$rootFolder.UniqueContentTypeOrder
= [Microsoft.SharePoint.SPContentType[]] $sortedListOfContentTypes
#Update the root
folder
$rootFolder.Update()
Write-host "ContentType(s)
sorted and added to the dropdownlist in list $($list.Name)"
}
$url = "http://spdev5:8002/sites/library"
$web = get-spweb $url
#The Display Name of the Content
Type
$ctypeName = "SuryaCT1"
try{
if($web.availablecontenttypes[$ctypeName] -eq $null)
{
$ctypeParent = $web.availablecontenttypes["Document"]
$ctypeTest = new-object Microsoft.SharePoint.SPContentType($ctypeParent, $web.contenttypes, $ctypeName)
##group name
$ctypeTest.Group = "Custom
Group"
$web.contenttypes.add($ctypeTest)
# $ctypeTest
= $web.ContentTypes[$ctypeName]
Write-Host "ctypeAgenda" $ctypeTest.id
##Add fields to
the ContentType
$field = $web.fields.getfield("Field1")
if($ctypeTest.Fields["Field1"] -eq $null)
{
$fieldLink = new-object Microsoft.SharePoint.SPFieldLink($field)
$ctypeTest.fieldlinks.add($fieldLink)
}
##Update
existing fields - as Required
if($ctypeTest.Fields["Field2"] -ne $null)
{
$field = $ctypeTest.Fields["Field2"]
$ctypeTest.FieldLinks[$field.Id].Required=$true
}
##Delete fields
from ContentType
if($ctypeTest.Fields["Field3"] -ne $null)
{
Write-Host "Field2"
$field = $ctypeTest.Fields["Field3"]
$fieldLink = new-object Microsoft.SharePoint.SPFieldLink($field)
$ctypeTest.FieldLinks.Delete($fieldLink.id);
}
##create new
field and then add to the ContentType
$web.fields.add("SuryaField", "Text", $false)
$field = $web.fields.getfield("SuryaField")
$field.Group = "Custom
Columns"
$fieldLink = new-object Microsoft.SharePoint.SPFieldLink($field)
$ctypeTest.fieldlinks.add($fieldLink)
$ctypeTest.Update($true)
}
else
{
Write-Host $ctypeTest "
Contentype is already avilable in the site."
}
#$ctypeTest =
$web.ContentTypes[$ctypeName]
## Add ContentType to the
SharePoint List
if($ctypeTest -ne $null)
{
$list = $web.Lists.TryGetList("suryadocs")
if($list.ContentTypesEnabled
-eq $false )
{
$list.ContentTypesEnabled
= $true;
$list.Update()
}
if ($list.ContentTypes[$ctypeTest.Name] -eq $null)
{
$list.ContentTypes.Add($ctypeTest);
Write-Host $ctypeTest.name "
ContentType added"
Sort-ContentTypes $list
}
}
}
catch
{
Write-Host "Error
occurred while Updating:" $_ -ForegroundColor Red
}
Stop-SPAssignment –Global
No comments:
Post a Comment