Erstellen Sie Fehler bei der Verwendung von PowerShell
-
22-10-2019 - |
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?
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.