Question

Je reçois cette erreur sur la ligne suivante

Exception appelant "Créer" avec l'argument "4" (s): « La valeur ne peut être nul. Nom du paramètre: parentFolder » A x: \ Dev \ PowerShell \ MoveFiles2DocSet.ps1: 29 Char: 91 + $ = NewDocumentSet [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet] :: Créer <<<< (lder docLib.RootFo $, $ Doc Niveau, cType.Id $, $ docsetProperties) + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: 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();

Edit:

Le code ci-dessus fonctionne, sauf jeu de documents ressemble à un dossier au lieu de l'icône du jeu de doc bleu. Quelqu'un peut-il faire la lumière sur cette s'il vous plaît.

Était-ce utile?

La solution

Juste en regardant votre code.

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

et $docLib est une chaîne?

$docLib = "NewProduct"

peut-être cela fonctionnerait

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

depuis

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

Autres conseils

Je suis un peu en retard à ce parti en particulier, mais tout en recherchant mon problème avec des ensembles de documents apparaissant sous forme de dossiers simples, je suis tombé sur cette entrée de blog ( http://aknauer.blogspot.com/2011/06/document-sets-und-powershell.html ) qui contenait cette précieuse pépite:

"Il est également important que vous sélectionnez le type de contenu $ CTYPE de la collection de la liste et non de la collection du Web. Dans le cas contraire, plutôt que d'un document établi un nouveau dossier est créé. "

Je changé mon affectation de type de contenu de la collection Web (comme Mala avait fait) à la collection de la liste (comme Andreas indique) et mon problème a été résolu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top