se créer lors de l'utilisation Erreur Powershell
-
22-10-2019 - |
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.
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.