使用PowerShell时会获得创建错误
-
22-10-2019 - |
题
我在以下行收到此错误
异常调用“创建”使用“ 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建议),我的问题已经解决。