Frage

Ich erhalte diesen Fehler in der folgenden Zeile

Ausnahmeaufruf "Erstellen" mit "4" -Argument (n): "Wert kann nicht null sein. DocumentManagement.documentsets.documentSet] :: create <<<< ($ doclib.rootfo lder, $ docset, $ cType.id, $ docsetProperties) + categoryInfo: NotSpecified: (:) [], MethodInvocationException + vollständigqualifiedErrid: 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();

Bearbeiten:

Der obige Code funktioniert außer Dokumentsatz sieht wie ein Ordner anstelle des Blue Doc Set -Symbols aus. Kann jemand das bitte Licht geben?

War es hilfreich?

Lösung

Nur indem Sie Ihren Code betrachten.

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

und $docLib Ist String?

$docLib = "NewProduct"

Vielleicht würde das funktionieren

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

seit

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

Andere Tipps

Ich bin zu spät zu dieser bestimmten Party, aber während ich mein eigenes Problem mit Dokumentsätzen recherchiere, die als einfache Ordner erscheinen, bin ich auf diesen Blogeintrag gestoßen ( http://aknauer.blogspot.com/2011/06/document-sets-und-powershell.html ) die dieses wertvolle Nugget enthielt:

"Es ist auch wichtig, dass Sie den Inhaltstyp $ cype aus der Sammlung der Liste und nicht aus der Sammlung des Webs auswählen. Andernfalls wird anstelle eines Dokuments ein neuer Ordner erstellt."

Ich wechselte meine Inhaltstypzuweisung aus der Websammlung (wie Mala) auf die Listensammlung (wie Andreas vorschlägt) und mein Problem wurde behoben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top