Effettuare una copia del sito di SharePoint con un nuovo nome
-
16-10-2019 - |
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
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ì.