Question

Puisque nous ne pouvons pas sauver le site SharePoint (avec fonction d'édition est activée) comme modèle, je suis à la recherche d'une façon de le faire par programme:

Faites une copie de « SiteA » avec un nouveau nom "SiteB" sous le même SiteCollection

http: // SPServer / Collection / SiteA

http: // SPServer / Collection / SiteB

Était-ce utile?

La solution

Je pense que le plus simple est de faire une exportation suivie d'une importation. Cela devrait fonctionner sans problème en double GUID. applets de commande PowerShell Export-SPWeb et Import-SPWeb.

Programmatically, il y a des équivalents à ceux-ci dans le contenu API de migration (parfois connu sous le nom « PRIME »). Ceux-ci sont dans le Microsoft.SharePoint.Deployment espace de noms. Vous utilisez la classe SPExport pour exporter un contenu package de migration, puis SPImport pour faire le l'importation.

Il y a une vue d'ensemble de la migration sur le contenu MSDN . Ne pas oublier que vous pouvez également utiliser l'API de services Web, comme une alternative programmatique au modèle d'objet.

Autres conseils

La solution de Rayn (voir poster des commentaires) me gived une idée d'exécuter PowerShell Cmdlt de mon code en utilisant:

System.Management.Automation

Collection<String> results = PowerShell.Create().AddScript(Ps).Invoke<String>();

mais j'ai encore un problème:

l'exécution de ce cmd "Get-Process": i obtenu le résultat

.

l'exécution de ce cmd « Import-SPWeb -Identity http: // SPServer / Colla / SiteA -Path c: \ BKP \ file.cmp »:

The term 'Import-SPWeb' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

en cours d'exécution de la deuxième fenêtre sur cmd powershell la cause aucun problème et je suis mon site importé.

Solution:

string BkpFile = @"C:\File.cmp";
string Url = "http://SPServer/CollA/SiteA";
string PsImport = "Import-SPWeb –Identity " + Url + " -Path " + BkpFile;
string PsPssnaping = "Add-PSSnapin Microsoft.SharePoint.PowerShell";

PowerShell ps = PowerShell.Create();

ps.AddScript(PsPssnaping);
ps.AddScript(PsImport);
ps.Invoke();

est-il pas possible de dupliquer un site de travail présente à un autre nom? La raison étant que je voudrais apporter des modifications à notre site Prod et voudrais tester les changements sur un site d'essai pour lequel je aurais besoin de reproduire notre site prod ..

Merci

Il y a une raison Microsoft a limité cela et ils ne sont pas claires à ce sujet, je faisais face à la même question et a constaté que

-> Son objet un problème cache car il utilise même GUIDS

Une solution de contournement pour faire une copie dans le même webapp est de restaurer la collection de sites en blocs de données de contenu différents (comme faire la ligne actuelle du contenu de base de données, ajouter un nouveau contenu DB et de restauration), je ne l'ai pas testé correctement mais je pense les problèmes de cache d'objets seront là.

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