Pregunta

Estoy recibiendo este error en la siguiente línea

Excepción llamar a "crear" con el argumento (s) "4": "El valor no puede ser nulo. Nombre del parámetro: ParentFolder" en X: dev PowerShell MoveFiles2Docset.ps1: 29 Char: 91 + $ newDocumentset = [Microsoft.Office. DocumentManagement.documentumentets.documentset] :: create <<<< ($ dclib.rootfo lder, $ docset, $ ctype.id, $ docsetproperties) + categoryInfo: nopecificado: (:) [], metodInVocationException + totalmente según lo cualificadoerid: dotnetmethodexception

$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();

Editar:

El código anterior está funcionando, excepto que el conjunto de documentos se parece a la carpeta en lugar del icono de conjunto de Doc Blue. ¿Alguien puede arrojar algo de luz sobre esto por favor?

¿Fue útil?

Solución

Solo mirando tu código.

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

y $docLib ¿Es la cadena?

$docLib = "NewProduct"

tal vez esto funcionaría

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

ya que

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

Otros consejos

Llego un poco tarde a esta fiesta en particular, pero mientras investigaba mi propio problema con los conjuntos de documentos que aparecen como carpetas simples, me encontré con esta entrada de blog ( http://aknauer.blogspot.com/2011/06/document-sets-und-powershell.html ) que contenía esta valiosa pepita:

"También es importante que seleccione el Contenido tipo $ CTYPE de la colección de la lista y no de la colección de la web. De lo contrario, en lugar de que solo se cree una nueva carpeta".

Cambié mi asignación de tipo de contenido de la colección web (como lo había hecho Mala) a la colección de listas (como sugiere Andreas) y mi problema se resolvió.

Licenciado bajo: CC-BY-SA con atribución
scroll top