如何使用PowerShell在SharePoint Online中为文档库设置默认内容类型?

时间:2016-03-18 10:40:27

标签: powershell sharepoint office365 sharepoint-online

我正在开发PowerShell脚本,这个脚本应该执行以下任务:

  1. 创建文档库(例如,Financian文档)
  2. 将内容类型附加到此文档库
  3. 将此内容类型设置为默认内容类型
  4. 我陷入第三点,无法使用PowerShell设置默认内容类型。以下是我用来更新内容类型的代码:

    代码

    $ctidary = New-Object System.Collections.Generic.List[Microsoft.SharePoint.Client.ContentTypeId]
    $ctidary.insert($ctID)
    $list.rootfolder.uniquecontenttypeorder = $ctidary
    $list.rootfolder.update()
    $clientContext.executeQuery()
    

    错误

    Cannot find an overload for "insert" and the argument count: "1"
    

    请建议我如何使用Powershell脚本将内容类型设置为SharePoint Online中文档库的默认内容类型。

    提前致谢!

2 个答案:

答案 0 :(得分:1)

在下面的方案中,解决方案适用于我的SharePoint Online租户:

$cttitle = "<Title of Content Type>"
$list = $clientContext.web.lists.GetByTitle("<Title of List/Library>")
$clientContext.load($list)
$clientContext.load($list.contenttypes)
$clientContext.executeQuery()

$currentOrder = $list.ContentTypes
$result = New-Object System.Collections.Generic.List[Microsoft.SharePoint.Client.ContentTypeId]

foreach ($ct in $currentOrder)
{
    if ($ct.Name.Contains($cttitle))
    {
        $result.Add($ct.Id)
    }
}

$list.RootFolder.UniqueContentTypeOrder = $result
$list.RootFolder.Update()

$clientContext.executeQuery()

在此解决方案中,当我尝试在$ct中直接添加$result时,不是迭代所有内容类型,而是对我不起作用,所以我迭代了所有内容类型,检索内容类型的ID。

答案 1 :(得分:0)

这个怎么样?

$ctidary = New-Object System.Collections.Generic.List[Microsoft.SharePoint.Client.ContentTypeId]
$ctidary.Add($ctID)
$list.RootFolder.UniqueContentTypeOrder = $ctidary
$list.RootFolder.Update()