我在以下行收到此错误

异常调用“创建”使用“ 4”参数:“值不能为null。参数名称:parentfolder” at x: dev powershell movefiles2docset.ps1:29 char:91 + $ newDocumentsEt = [microsoft.office.office。 documentManagement.documentsets.documentset] :: create <<<($ doclib.rootfo lder,$ docset,$ ctype.id,$ docsetProperties) + categoryInfo:notspecified:::::::::) [[

$newDocumentSet = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet]::Create($docLib.RootFolder,$DocSet,$cType.Id,$docsetProperties)

$siteURL="http://intranet.colgate.com/sites/blazingWhite"          
$docLib = "NewProduct"
$site=Get-SPSite $siteURL
$web=$site.RootWeb
$collFiles=$web.GetFolder($docLib).Files
$count=$collFiles.Count
while($count -ne 0)
{
$item = $collFiles[$count-1].Item
## Create document set if it does not exists
$DocSet = $item["CounterParty"]
$DocSetURL = $siteURL + "/" + $docLib + "/" + $DocSet
$docLibURL = $siteURL + "/" + $docLib
[Microsoft.SharePoint.SPFolder]$targetFolder = $web.GetFolder($DocSetURL)
[Microsoft.SharePoint.SPFolder]$doclibFolder = $web.GetFolder($docLibURL)
Write-Host ""
Write-Host $DocSet
Write-Host $targetFolder
Write-Host $doclibFolder

  if (-not $targetFolder.Exists)
    {   # Create Doc Set    
        # Get Document Set Content Type from list   
            $cType = $web.ContentTypes["Document Set"]
        # Create Document Set Properties Hashtable          
            [Hashtable]$docsetProperties = @{"Title"=$DocSet}
            $docsetProperties = @{"Description"=$DocSet}
            $docsetProperties = @{"CounterParty"=$DocSet}

            Write-Host $cType.Id   
            Write-Host $docsetProperties
            Write-Host ""
        # Create new Document Set

        $newDocumentSet = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet]::Create($doclibFolder,$DocSet,$cType.Id,$docsetProperties)
        Write-Host "Document set created " $newDocumentSet

        if($newDocumentSet.Exists)
        {
            # changing folder type to Document Set type
            $newDocumentSet.Item["ContentTypeId"] = $cType.Id
            $newDocumentSet.Item["HTML File Type"] = "SharePoint.DocumentSet"
            $newDocumentSet.Item.Update()
        }

    } 

# move file(s) to the document set
    Write-Host "$DocSet is the doc set. $collFiles[$count-1].Name is name"
    $collFiles[$count-1].MoveTo($siteURL + "/" + $docLib + "/" + $DocSet + "/"  + $collFiles[$count-1].Name, $true)                       
$count--
}

#dispose:
    $web.Dispose();    
    $site.Dispose();

编辑:

上面的代码正在工作,但文档集看起来像文件夹,而不是蓝色文档集图标。任何人都可以为此提供一些启示。

有帮助吗?

解决方案

只是查看您的代码。

Create($docLib.RootFolder,$DocSet,$cType.Id,$docsetProperties)

$docLib 是字符串吗?

$docLib = "NewProduct"

也许这会起作用

Create($targetFolder,$DocSet,$cType.Id,$docsetProperties)

自从

[Microsoft.SharePoint.SPFolder]$targetFolder = $web.GetFolder($DocSetURL)

其他提示

我有点迟到这个特定的聚会,但是在研究自己的问题时,文档集以简单的文件夹显示,我遇到了这个博客条目( http://aknauer.blogspot.com/2011/06/document-sets-und-powershell.html )包含这个有价值的掘金:

“从列表的集合而不是网络集合中选择内容类型$ ctype也很重要。否则,不仅仅是文档集创建新文件夹。”

我将内容类型分配从Web集合(如Mala所做的那样)切换到列表集合(正如Andreas建议),我的问题已经解决。

许可以下: CC-BY-SA归因
scroll top