In one of the requirement, I Added some Content Types to a Pages Document Library. And on the New Document, the list shown like as below.
On the above, if you see, the first 4 content types are the default OOB Content Types. The last three, I added.
Now, the customer wanted to see only these three in the drop down and on the EditProperties Page as well.
To do that, either we can delete the 4 OOB content types from the Library itself. But even that also, we should not do. That’s the requirement. Then, we need to hide these CTs from display only. For that, I have come up with a PowerShell Script. The script is as below.
cls $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm $LogFile = ".DocumentLibraryPatch-$LogTime.rtf" start-transcript $logfile # Add SharePoint PowerShell Snapin if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) { Add-PSSnapin Microsoft.SharePoint.Powershell } $scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent Set-Location $scriptBase ################################################################################################################# $CSVFile3 = $scriptBase + "" + "RemoveOOTBContentTypes.csv" $CSVFile2 = $scriptBase + "" + "ListDetails.csv" import-csv $CSVFile2 | where { $web = Get-SPWeb $_.SiteUrl $myList = $web.Lists[$_.LibraryName] $rootFolder = $myList.RootFolder $contentTypeList = $rootFolder.ContentTypeOrder $contentTypeList.Clear() import-csv $CSVFile3 | where { $contentTypeList.Add($myList.ContentTypes[$_.MakeVisibleContentType]) } $rootFolder.UniqueContentTypeOrder = $contentTypeList $rootFolder.Update() $myList.Update() Write-host "OOTB Content Types are removed successfully" } stop-transcript
After executing the script, the page looks like,
If we look at the Library settings, we can see all the content types available there.
I am using two CSV Files as input for this script.
Download SCRIPT HERE
Happy Coding.
Sathish Nadarajan.
Leave a comment