Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Iām excited to kick this series off because I really think PowerShell rocks. The goal of this series is to provide some automation for SharePoint Administrators to perform various deployment and/or troubleshooting tasks. To use the script simply copy it to notepad and save it with a ps1 extension. To run the script on your SharePoint 2010 environment, simply launch PowerShell and get to the directory where the script is located. To run the script type:
.\scriptname.ps1
The first script was created based on a blog I previously authored here. Please review that blog for more information. The following script provides the following functionality:
Selecting Option 1:
Creates a Content type derived from document and puts it in a special _hidden group at the site level. It also adds the hidden content type to a document library
Selecting Option 2:
If the hidden content type was created previously, choosing option 2 will add the hidden content type
Note: You will need to keep track of the names of the hidden content type by name after they are created.
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
Start-SPAssignment -Global
$siteurl = read-host "Enter the name of your site and press enter"
$site = New-Object Microsoft.SharePoint.SPSite($siteurl)
[Microsoft.SharePoint.SPWeb]$web = $site.OpenWeb()
Write-Host "Press 1 to create a hidden Content Type and add it to a Document Library"
Write-Host "Press 2 to add a previously created hidden Content type to a Document Library"
[int]$result = read-host
if($result -eq 1)
{
[Microsoft.SharePoint.SPContentTypeCollection]$cts = $web.ContentTypes
$parent = $web.ContentTypes | where {$_.id -eq "0x0101"}
$ctName = Read-Host "Enter the name of your Content Type"
#Creating ContentType and adding to the site collection
$ct = New-Object Microsoft.SharePoint.SPContentType($parent, $cts, $ctName)
$cts.Add($ct)
#Putting the Content Type in the hidden Group
$Ct.Group = "_Hidden"
$ct.Update()
#Adding Content Type to Document library
Write-host "Adding Hidden Content Type to Document Library"
$doclib = Read-host "Type the name of the Document Library you want to add it to and press Enter key."
[Microsoft.SharePoint.SPList]$list = $web.Lists[$doclib];
[Microsoft.SharePoint.SPDocumentLibrary]$oDocumentLibrary = $list;
$oDocumentLibrary.ContentTypesEnabled = "true"
write-host "Adding new hidden Content Type to Document Library"
$oDocumentLibrary.ContentTypes.Add($ct)
$list.Update()
write-host("Operation Completed Successfully")
}
elseif($result -eq 2)
{
$hiddenct = Read-Host "Enter the name of the Hidden Content Type and press Enter"
$doclib = Read-host "Enter the name of the Document Library you want to add it to and press Enter"
#Referencing DocLib
[Microsoft.SharePoint.SPList]$list2 = $web.Lists[$doclib]
[Microsoft.SharePoint.SPDocumentLibrary]$oDocumentLibrary = $list2;
$oDocumentLibrary.ContentTypesEnabled = "true"
#Pull the ContentType from the Hidden Group and Add it to the DocLib
$cthid = $web.AvailableContentTypes[$hiddenct]
#Add hidden Content Type to DocLibrary
write-host "Adding hidden Content Type to Document Library"
$oDocumentLibrary.ContentTypes.Add($cthid);
$list2.Update();
write-host "Operation Completed Successfully"
}
else {write-host "Run the script again and choose option 1 or 2"}
#Disposing Objects now
Stop-SPAssignment -Global
Thanks!
-Russmax ![]()