Powershell 功能函数大全(Sharepoint 2013/2010)

Powershell 功能函数大全

说明: 本文章讲述powershell操作大全,是笔者多时积累完成。一步步从底层网站架构搭建,到网页内容的呈现, 均由powershell完成。 考虑到网站内容框架的移植,比如从开发环境到测试环境,再到产品环境,底层框架内容可由Powershell一键部署,这样更加方便以及可维护性。考虑到项目架构搭建的异同,初步分为以下步骤:

1. Poweshell 对 Site Column的完整操作

2. Powershell 对 Content Type的完整操作

3. Powershell 对 List 的完整操作

4. Powershell 对 Web Part(页面)操作

5. Powershell 对 Security Group操作

经过以上操作, 整个空网站就搭建成功。

 

1. Site Column的创建

a. 创建一般类型site column

function CreateSiteColumn($siteUrl, $columnName, $type, $required, $unique){
try{
$site = new-object Microsoft.SharePoint.SPSite $siteUrl
$web = $site.RootWeb 
 $field = $web.Fields[$columnName]
 if($field -ne $null){
$web.Fields.Delete($columnName)
$web.Update()
}

$fieldGroup = "Retail"
$columnNameR = $columnName.Replace(" ", "")
$newSiteColumn = $web.Fields.CreateNewField([Microsoft.SharePoint.SPFieldType]::$type, $columnNameR)
$newSiteColumn = $web.Fields.Add($newSiteColumn)
$field = $web.Fields[$columnNameR]

$field.Group = $fieldGroup
$field.Required = $required
$field.EnforceUniqueValues = $unique
$field.Title = $columnName
$field.Update()
$web.Update()
$site.Dispose()
LogWrite "success to create sitecolumn $columnName"
}
catch
{
   LogWrite "failed to create sitecolumn $columnName"
   LogWrite $_.Exception.Message
   throw
}
}

b. 创建RichText类型的site column

function CreateSiteColumn-Richtext($siteUrl, $columnName, $required, $unique){
try{
$site = new-object Microsoft.SharePoint.SPSite $siteUrl
$web = $site.RootWeb 
 $field = $web.Fields[$columnName]
 if($field -ne $null){
$web.Fields.Delete($columnName)
$web.Update()
}

$fieldGroup = "Retail"
$columnNameR = $columnName.Replace(" ", "")
$newSiteColumn = $web.Fields.CreateNewField([Microsoft.SharePoint.SPFieldType]::Note, $columnNameR)
$newSiteColumn = $web.Fields.Add($newSiteColumn)
$field = $web.Fields[$columnNameR]

$field.Group = $fieldGroup
$field.Required = $required
$field.EnforceUniqueValues = $unique
$field.Title = $columnName
$field.RichText = $true
$field.RichTextMode = "Compatible"
#Compatible,FullHtml

$field.Update()
$web.Update()
$site.Dispose()
LogWrite "success to create sitecolumn $columnName"
}
catch
{
   LogWrite "failed to create sitecolumn $columnName"
   LogWrite $_.Exception.Message
   throw
}
}

c. 创建Calculated类型的site column

function CreateSiteColumn-Calculated($siteUrl, $columnName,  [Array]$calculateds){
try{
$site = Get-SPSite  $siteUrl
$web = $site.RootWeb 
 $field = $web.Fields[$columnName]
 if($field -ne $null){
$web.Fields.Delete($columnName)
$web.Update()
}
$formula = "="
$calculateds | ForEach{ 
    if($formula -eq "="){
    $formula += "[" + $_ +  "]"
    }
    else{
         $formula += "+" +"[" + $_+  "]"
    }
}
$columnNameR = $columnName.Replace(" ", "")
$fieldGroup = "Retail"
#$newSiteColumn = $web.Fields.CreateNewField($a, $columnName)
$newSiteColumn = $web.Fields.Add($columnNameR, [Microsoft.SharePoint.SPFieldType]::Calculated, $false)
$field = $web.Fields[$columnNameR]
$field.Formula=$formula
$field.OutputType="Number"
$field.Group = $fieldGroup
$field.Title = $columnName
$field.Update()
$web.Update()
$site.Dispose()
LogWrite "success to create sitecolumn $columnName"
}
catch
{
    LogWrite "failed to create sitecolumn $columnName"
    LogWrite $_.Exception.Message
   throw

}

}


d. 创建Choice类型的site column

 function CreateSiteColumn-Choice($siteUrl, $columnName, [Array] $choiceFieldChoices ){
 try{
 $site = Get-SPSite $siteUrl
 $web = $site.RootWeb 
 $field = $web.Fields[$columnName]
 if($field -ne $null){
$web.Fields.Delete($columnName)
$web.Update()
}
$fieldGroup = "Retail"
$columnNameR = $columnName.Replace(" ", "")
 # Declare a new empty String collection
$stringColl = new-Object System.Collections.Specialized.StringCollection
# Add the choice fields from array to the string collection
$stringColl.AddRange($choiceFieldChoices)
$newSiteColumn = $web.Fields.Add($columnNameR,[Microsoft.SharePoint.SPFieldType]::Choice, $false, $false, $stringColl)
$field = $web.Fields[$columnNameR]
$field.Group = "Retail"
$field.Title = $columnName
$field.Update()
$web.Update()
$site.Dispose()
LogWrite "success to create sitecolumn $columnName"
}
catch
{
    LogWrite "failed to create sitecolumn $columnName"
    LogWrite $_.Exception.Message
   throw
   
}
}


e. 创建Metadata 类型site column

function CreateSiteColumn-Metadata($siteUrl, $columnName, $fieldType, $isMulitple, $termStoreName, $termGroupName, $termSetName, $termName){
try{
#$fieldType : "TaxonomyFieldTypeMulti" ,"TaxonomyFieldType"
$site = Get-SPSite -Identity $siteUrl
$rootWeb = $site.RootWeb
$field = $rootWeb.Fields[$columnName]
if($field -ne $null){
$rootWeb.Fields.Delete($columnName)
$rootWeb.Update()
}

$fieldGroup = "Retail"
$columnNameR = $columnName.Replace(" ", "")
#Create a taxonomy field
$field = [Microsoft.SharePoint.Taxonomy.TaxonomyField]$rootWeb.Fields.CreateNewField($fieldType, $columnNameR);

#Get a taxonomy session
$session = new-object Microsoft.SharePoint.Taxonomy.TaxonomySession($site)

#Get Term Store
$termstore = $session.TermStores[$termStoreName]

#Get Term Group
$group = $termstore.Groups[$termGroupName]

#Get Term Set
$termSet= $group.TermSets[$termSetName]
 
#populate newly created field
 $field.Sspid = $termSet.TermStore.Id
 $field.TermSetId = $termSet.Id
 if($termName -ne $null){
 $terms = $termSet.GetAllTerms()
 # Get the Term using the name
 $term = $terms | ?{$_.Name -eq $termName}
 $field.AnchorId = $term.Id
 }
 $field.AllowMultipleValues = $isMulitple
 $field.Group = $fieldGroup
 $field.Required = $false
 $rootWeb.Fields.Add($field)
 $rootWeb.Update()

 $field = $rootWeb.Fields[$columnNameR]
 $field.Title = $columnName
 $field.Update()

#Update sp web
 $rootWeb.Update()
 $site.Dispose()
 LogWrite "success to create sitecolumn $columnName"
 }
 catch
{
LogWrite "failed to create sitecolumn $columnName"
LogWrite $_.Exception.Message
   throw

}
}



2 . Content Type 的创建

a. 创建congtent type

function CreateContenType($siteUrl, $contentTypeName, $parentContentType, [Array] $siteColumnNames){
try{
$spSite = Get-SPSite $siteUrl
$rootWeb = $spSite.RootWeb

$type = $rootWeb.ContentTypes[$contentTypeName]
if($type -ne $null){
    $rootWeb.ContentTypes.Delete($type.Id)
    $rootWeb.Update()
}

#$spWeb.AvailableContentTypes | Select Name
$parent = $rootWeb.AvailableContentTypes[$parentContentType]
$contentType =  New-Object Microsoft.SharePoint.SPContentType -ArgumentList @($parent, $rootWeb.ContentTypes, $contentTypeName)
$contentType.Group = "Retail"
$rootWeb.ContentTypes.Add($contentType)
$rootWeb.Update()

$ct=$rootWeb.ContentTypes[$contentTypeName]
if($siteColumnNames -ne $null){
$siteColumnNames | ForEach {
		$fieldAdd=$rootWeb.Fields[$_]
        $fieldLink=New-Object Microsoft.SharePoint.SPFieldLink($fieldAdd)
        $ct.FieldLinks.Add($fieldLink)
	}
}

$ct.Update()
$spSite.Dispose()
 LogWrite "success to create content type $contentTypeName"
}
catch{
    LogWrite "faled to create content type $contentTypeName"
    LogWrite $_.Exception.Messag
    throw
}

}

 

b. 删除content type

function DeleteContenType($siteUrl){
try{
$spSite = Get-SPSite $siteUrl
$rootWeb = $spSite.RootWeb
$type = $rootWeb.ContentTypes
$type | ForEach {

if($_.Group -eq "Retail" -and $_.Name -ne "Retail Item Base" -and $_.Name -ne "Knowledge Asset"){
Write-Host $_.Name + $_.Id
$type.Delete($_.Id)
}
    
}
$rootWeb.Update()
$rootWeb.Update()
$spSite.Dispose()
LogWrite "success to delete content type $contentTypeName"
}
catch{
    LogWrite "faled to delete content type $contentTypeName"
    LogWrite $_.Exception.Messag
    throw
}
}


c. 更新Document set

function UpdateDocumentSet($siteUrl, $contentTypeSet, $contentType){
$spSite = Get-SPSite $siteUrl
$rootWeb = $spSite.RootWeb
$cty = $rootWeb.ContentTypes[$contentType].Id
$dsct = $rootWeb.ContentTypes[$contentTypeSet]
$dst = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSetTemplate]::GetDocumentSetTemplate($dsct)
$dst.AllowedContentTypes.Add($cty)
$dst.AllowedContentTypes.Remove("0x0101")
$dst.Update($true)
$spSite.Dispose()
}


3. 创建list

a. 创建list

function Add-SPList([string]$url, [string]$name, [string]$type) {
try{
	$spWeb = Get-SPWeb $url
#  Check list is exist or not  
    $spList = $spWeb.Lists[$name]
    $templateType = $spWeb.ListTemplates[$type]
    if($spList -ne $null){
         $spList.Delete()  
         LogWrite "success to delete the list named $name " 
    }
	[void]$spWeb.Lists.Add($name, "", $templateType)
    LogWrite "success to Add the list named $name"
}
catch{
                 LogWrite "failed to add list named $name"
                LogWrite $_.Exception.Message
                throw
}
finally{
                $spWeb.Dispose()
           } 
}

 

b. 创建View

function Add-SPListViewByFields([string]$webUrl, [string]$listName, [string]$listViewName, $viewName, $fieldsNames, $query。 $scope) {
try{
	$spWeb = Get-SPWeb $webUrl
    $spList = $spWeb.Lists[$listName]
    if($spList -eq $null){
        LogWrite "list named $listName is not exsiting"
        return
    }

    $fields = $spList.Views[$listViewName].ViewFields.ToStringCollection()
    $fields.Clear()
    $fieldsNames | ForEach{
        $fields.Add($_)
    }

    $strQuery = ""
    if($query -ne $null){
        $strQuery = $query
    }
    $spList.Views.Add($viewName, $fields, $strQuery, 10, $True, $False , "HTML", $False)
     $view = $spList.Views[$viewName]

        #$view.Scope = "RecursiveAll"

        if($scope -ne $null){

            $view.Scope = $scope

        }

       $view.Update() 
	LogWrite "succes add the list view named $viewName in list $listName" 
}
 catch
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值