Add/Delete ContentType in list via powershell

1. Add  contenttype to the list

#########################################################################
#  $siteUrl : The storeportal site. http://loacalhost                                                                   #
#  $listName : The name of the list. "Store Requests"                                                            #
#  $contentTypeName: The contenttype name   "Document"                                                 #
#  Example : AddContentTypeToList "http://loacalhost" "Shared Documents" "Document"   #
#########################################################################

#  Import the Microsoft.SharePoint.PowerShell

if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

function AddContentTypeToList($siteUrl, $listName, $contentTypeName)
{
    
    $site = Get-SPSite -identity $siteUrl
    $spWeb = Get-SPWeb -identity $siteUrl
    $contentTypes = $site.rootweb.ContentTypes

    try{
        #  Check list is exist or not
        foreach($list in $spWeb.Lists)
        {
            if($list.Tostring() -eq $listName)
            {
                write-host "The list named $list is existing "
                
                #  Check contentType is existing in the site
                if(($contentTypes|where {$_.Name -eq $contentTypeName}) -eq $null)
                {
                    write-host "The contentType is not existing in the site"
                    return 
                }
                
                #  Check contentType is exist or not in the list
                foreach($listCT in $list.ContentTypes|where {$_.Name -eq $contentTypeName})
                {
                    write-host "The contentType $contentTypeName is exiting in the list"
                    return 
                }
               
                $contentType = $spWeb.ContentTypes[$contentTypeName] 
                $list.ContentTypes.Add($contentType)
                $list.Update()
                write-host "Add contentType success"
                return 
            }
        }
                write-host "The list named $list is not existing "
       }
       
    catch{
                write-host "(ERROR : "$_.Exception.Message")"
                throw
         }
         
    finally{
               $spWeb.Dispose()
           } 
}


 


2. Delete the contenttype in list

#########################################################################
#  $siteUrl : The storeportal site. http://loacalhost                                                                   #
#  $listName : The name of the list. "Store Requests"                                                            #
#  $contentTypeName: The contenttype name   "Document"                                                 #
#  Example : DeleteContentType http://localhost "Shared Documents" "Document Set"  #
#########################################################################

#  Import the Microsoft.SharePoint.PowerShell

if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

function DeleteContentType($siteUrl, $listName, $contentTypeName)
{
    
    $spSite = Get-SPSite -identity $siteUrl
    $spWeb = Get-SPWeb -identity $siteUrl
    $contentTypes = $spSite.rootweb.ContentTypes

    try{
        #  Check list is exist or not
        foreach($list in $spWeb.Lists)
        {
            if($list.Tostring() -eq $listName)
            {
                write-host "The list named $list is existing "
                
                #  Check contentType is existing in the site
                if(($contentTypes|where {$_.Name -eq $contentTypeName}) -eq $null)
                {
                    write-host "The contentType is not existing in the site"
                    return 
                }
                
                #  Check contentType is exist or not in the list
                if(($list.ContentTypes|where {$_.Name -eq $contentTypeName}) -eq $null)
                {
                    write-host "The contentType $contentTypeName is not exiting in the list"
                    return 
                }
                else 
                {
                    $contentType = $list.ContentTypes[$contentTypeName] 
                    $list.ContentTypes.Delete($contentType.Id)
                    $list.Update()
                    write-host "Delete contentType success"
                }
                return 
            }
        }
        write-host "The list named $list is not existing "
       }
       
    catch{
                write-host "(ERROR : "$_.Exception.Message")"
                throw
         }
         
    finally{
               $spWeb.Dispose()
               $spSite.Dispose()
           } 
}



 

你可能感兴趣的:(Add/Delete ContentType in list via powershell)