Получение ошибки создания при использовании PowerShell
-
22-10-2019 - |
Вопрос
Я получаю эту ошибку на следующей строке
Исключение вызовы «Создать» с «4» аргумента (ы): «значение не может быть нулевым. Имя параметра: parentfolder» на x: dev powershell move -files2docset.ps1: 29 char: 91 + $ newdocumentset = [microsoft.office. DocumentManagement.documentsets.documentset] :: create <<<<< ($ doclib.rootfo lder, $ docset, $ ctype.id, $ docsetproperties) + CategoryInfo: NotPocified: (:) [], MethodInVocationException + полностьюквалифицированные морозы: dotNetexception
$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();
Редактировать:
Приведенный выше код работает, за исключением того, что набор документов выглядит как папка вместо синего значка набора DOC. Может ли кто -нибудь пролить свет на это, пожалуйста.
Решение
Просто посмотрев на свой код.
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 из коллекции списка, а не из коллекции Интернета. В противном случае, а не просто документ, установивший новую папку».
Я переключил свое назначение типа контента с веб -коллекции (как это сделала Мала) на коллекцию списков (как предполагает Андреас), и моя проблема была решена.