Déplacer des fichiers entre les bibliothèques de documents dans la même Collection de sites
J'ai un besoin pour aller de ~10 000 fichiers à partir d'un document de la bibliothèque à l'autre dans la même collection de sites. Je crois que powershell est le meilleur moyen pour ce faire.
J'ai trouvé l'article suivant: http://blog.isaacblum.com/2011/10/04/spfilecollection-class-copy-files-to-another-document-library/#respond qui suggère un moyen pour faire cela, cependant, je ne suis pas sûr de savoir comment adapter ce script (je reçois ma première exposition à Powershell avec ce projet).
J'ai essayé ce qui suit, en vain:
$PSSnapin = Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-Null
clear
$org = "hhttp://farm/sitecollection/Document Library Source/Forms/AllItems.aspx"
$dest = "hhttp://farm/sitecollection/Document Library Destination/Forms/AllItems.aspx"
$orgLibrary = (Get-SPWeb $org).Folders["Documents"]
$destLibrary = (Get-SPWeb $dest).Folders["Documents"]
$destFiles = $destLibrary.Files
foreach ($file in $orgLibrary.Files)
{
$curFile = $file.OpenBinary()
$destURL = $destFiles.Folder.Url + "/" + $file.Name
$destFiles.Add($destURL, $curFile, $true)
}
Est-il une autre façon de faire cela? Note que je suis en utilisant MOSS2007 et Powershell 2.0, pas de SharePoint 2010.
Mise À Jour /Semi-Réponse:
Comme par x0n du post ci-dessous, ce n'est pas pris en charge dans SharePoint 2007 (seulement en 2010). Je recevied les conseils suivants à l'extérieur de ce fil, ce qui est intéressant, et devrait en aider d'autres à l'avenir:
Malheureusement SharePoint 2010 Management Shell (c'est PowerShell
composant logiciel enfichable et les applets de commande associées) n'est pas compatible avec MOSS 2007 et
il n'y a pas applets de commande disponible directement à partir de Microsoft pour que
la version de SharePoint. Ce que cela signifie est que vous pouvez toujours utiliser
PowerShell avec MOSS 2007, mais êtes-vous allez devoir écrire
vos propres applets de commande qui utilisent STSADM ou le Modèle d'Objet SharePoint
directement, ou vous allez avoir à utiliser MOSS 2007-compatible applets de commande
d'un tiers. Je vous suggère de vérifier Gary Lapointe blog de
beaucoup de grands applets de commande PowerShell pour MOSS 2007
(http://blog.falchionconsulting.com/), ou à des endroits où les gens télécharger
les applets de commande tels que CodePlex.com le Script TechNet Référentiel,
POSHCode.org, ou http://get-spscripts.com/.
OriginalL'auteur Michael A | 2012-07-17
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas surpris que vous obtenez nulle part: La Microsoft.SharePoint.PowerShell composant logiciel enfichable est pour SharePoint 2010 seulement, et n'est pas disponible sur un SharePoint server 2007.
Franchement, la façon la plus simple pour ce faire est d'ouvrir Internet Explorer, accédez à la bibliothèque du document source et ouvrez l'explorateur de vue." Sélectionner tous les documents, et de les copier (ctrl+c). Ouvrez une autre fenêtre de IE et de faire la même chose pour la cible de la bibliothèque de documents et de le coller (ctrl+v).
Si elle n'est pas ouvert dans l'explorateur, assurez-vous que la machine que vous utilisez pour faire le copier/coller a la "WebClient" service en cours d'exécution. Si vous êtes sous Windows 2008 R2, ce service n'est disponible que si vous décidez d'ajouter le "bureau" de la fonctionnalité. C'est beaucoup plus facile de trouver une machine Windows 7 au lieu de cela, ce qui aura le service WebClient (mais assurez-vous qu'il est en cours d'exécution.)
Mise à jour:
Cela dit, votre script est probablement de l'ordre de 80% et il n'a pas vraiment besoin que 2010 snapin. Je ne peux pas tester en ce moment (désolé), mais il devrait être d'environ 99% correct:
Bonne chance.
Vous ne devriez pas avoir à modifier votre script que beaucoup à le faire fonctionner sur 2007, de toute façon. Permettez-moi de prendre un coup d'oeil.
J'ai essayé de mettre en œuvre cela, mais je suis de la réception de la suivante pour chaque fichier dans la bibliothèque (et il ne bouge pas), des idées? Erreur: Vous ne pouvez pas appeler une méthode sur une expression de valeur null. Au niveau de ligne:20 char:23 + $destFiles.Ajouter <<<< ($destURL, $curFile, $true) + CategoryInfo : InvalidOperation: (Ajouter:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
OriginalL'auteur x0n