Получение ошибки создания при использовании PowerShell

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/19377

  •  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 из коллекции списка, а не из коллекции Интернета. В противном случае, а не просто документ, установивший новую папку».

Я переключил свое назначение типа контента с веб -коллекции (как это сделала Мала) на коллекцию списков (как предполагает Андреас), и моя проблема была решена.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top