【问题标题】:Create Multiple Document Sets from List从列表创建多个文档集
【发布时间】:2015-07-31 12:40:27
【问题描述】:

我需要为这个 SharePoint 2010 列表中的每个名称创建一个文档集。文档集标题是人员的​​名字和姓氏,并且文档集还具有需要设置的委员会名称属性。委员会名称来自同一个 SharePoint 列表。

我不明白我的代码有什么问题:

$ErrorActionPreference = "Stop"
$url = "http://SERVER/etest"
$listName = "Advisory Committee"
$doclib = "TACM Application Docments"

$web = Get-SPWeb $url;
$list = $web.Lists[$listName];
$item = $list.Items;

$item | ForEach-Object {    
    $fullName = $_['Last Name'] + ", " + $_['First Name']
    $committeeName = $_['Committee Name']

    $cType = $list.ContentTypes["Document Set"]

    [Hashtable]$docsetProperties = @{"Committee Name"=$committeeName}

        $newDocumentSet = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet]::Create($doclib.RootFolder,

$fullName,$cType.Id, $docsetProperties)

}

$web.Dispose()  

我收到以下错误: ForEach-Object:找不到“创建”的重载和参数计数:“4”。 在 C:\Users\ev\desktop\docset.ps1:10 char:23 + $项目 | ForEach-对象

【问题讨论】:

    标签: powershell sharepoint sharepoint-2010


    【解决方案1】:

    DocumentSet.Create method 期望第一个参数是文件夹(SPFolder 类型):

    parentFolder
    
    Type: Microsoft.SharePoint.SPFolder
    The folder in which to create the new DocumentSet object.
    

    在您的情况下,您传递了一个无效对象 $doclib.RootFolder,因为 $doclib 是一个 string 变量,您可能想要这样的东西:

    $doclibName = "TACM Application Docments"
    $doclib = $web.Lists[$doclibName];
    $newDocumentSet = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet]::Create($doclib.RootFolder,$fullName,$cType.Id, $docsetProperties)
    

    示例

    $url = "http://contoso.intranet.com"
    $listTitle = "Documents"
    
    $web = Get-SPWeb $url;
    $list = $web.Lists[$listTitle]
    $docSetContentType = $list.ContentTypes["Document Set"]
    [Hashtable]$docSetProperties = @{}
    $docSetName = "Archive"
    $docSet = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet]::Create($list.RootFolder,$docSetName,$docSetContentType.Id, $docSetProperties)
    $web.Dispose() 
    

    如何将文档集内容类型添加到库中

    • 转到Library Settings,然后点击Advanced Settings
    • 设置允许管理内容类型?到Yes并点击Ok按钮
    • 点击Add from existing site content types链接并选择 Document Set 内容类型,然后点击 Ok 按钮

    【讨论】:

    • 感谢您指出这一点。我已经更新了代码。但是,我仍然遇到同样的错误。
    • 在这种情况下,请尝试将$cType.Id 替换为$cType.Id.ToString()
    • 顺便说一句,答案中提供的示例对我有用
    • 我收到了一个不同的错误。 code您不能在空值表达式上调用方法。code
    • 是的,这是真的。它已启用并可作为内容类型使用。我想不清楚我是否这样做了。我只是确保你知道这不是问题所在。我很抱歉没有说清楚。
    猜你喜欢
    • 2021-05-05
    • 2023-04-11
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多