Domanda

Dal momento che non può salvare sito di SharePoint (con funzionalità di pubblicazione abilitato) come modello, sto cercando un modo per fare questo a livello di codice:

Fare una copia di "SiteA" con un nuovo nome "SiteB" sotto lo stesso SiteCollection

http: // SPServer / Collezione / SitoA

http: // SPServer / Collezione / SiteB

È stato utile?

Soluzione

Penso che il modo più semplice è quello di fare l'esportazione seguita da un'importazione. Che dovrebbe funzionare senza il problema GUID duplicato. cmdlet di PowerShell sono Export-SPWeb e Import-SPWeb.

a livello di programmazione, ci sono equivalenti a questi in l'API di migrazione del contenuto (a volte conosciuto come "PRIME"). Questi sono nella Microsoft.SharePoint.Deployment Namespace . Si utilizza la classe SPExport di esportare un contenuto pacchetto di migrazione, e quindi SPImport fare la importazione.

C'è una panoramica della migrazione contenuti su MSDN . Non dimenticate che è anche possibile utilizzare l'API dei servizi web, come alternativa programmatica al modello a oggetti.

Altri suggerimenti

La soluzione del Rayn (vedi commenti sul post) mi gived un'idea per eseguire PowerShell Cmdlt dal mio codice utilizzando:

System.Management.Automation

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

, ma ho ancora un problema:

l'esecuzione di questo cmd "Get-Process": ho ottenuto il risultato

.

l'esecuzione di questo 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.

in esecuzione la seconda cmd nella finestra di PowerShell causa nessun problema e mi sono importati mio sito.

Soluzione:

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();

Non c'è possibilità di duplicare un sito di lavoro presenti a con un altro nome? Il motivo è che vorrei apportare cambiamenti al nostro sito Prod e vorrei testare le modifiche su un sito di prova per il quale avrei bisogno di replicare il nostro sito prod ..

Grazie

C'è un motivo Microsoft ha limitato questo e non sono chiare a questo proposito, ho affrontato lo stesso problema e ha scoperto che

-> E 'un problema di cache oggetto in quanto utilizza stessi GUID

Una soluzione per fare una copia della stessa webapp è quello di ripristinare la raccolta siti in diversi DB di contenuti (come rendere l'attuale contenuto non in linea DB, aggiungere un nuovo contenuto DB e ripristino), non ho ancora testato questo correttamente, ma penso i problemi della cache oggetto sarà lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top