Frage

Da wir SharePoint -Site (mit aktivierter Veröffentlichungsfunktion) als Vorlage nicht speichern können, suche ich nach einer Möglichkeit, dies programmgesteuert zu machen:

Machen Sie eine Kopie von "Sitea" mit einem neuen Namen "SiteB" unter derselben SiteCollection

http: // spserver/collection/sitea

http: // spserver/collection/standbb

War es hilfreich?

Lösung

Ich denke, der einfachste Weg ist es, einen Export zu machen, gefolgt von einem Import. Das sollte ohne das doppelte Anhaltsproblem funktionieren. PowerShell CMDLets sind Export-SPWEB und Import-SPWEB.

Programmatisch gibt es in der Content -Migrations -API (manchmal als "Prime" bezeichnet). Diese sind in der Microsoft.sharepoint.Deployment Namespace. Sie verwenden die Spexport Klasse, um ein Content -Migrationspaket zu exportieren, und dann Spimport den Import machen.

Es gibt einen Überblick über die Content -Migration auf Msdn. Vergessen Sie nicht, dass Sie auch die Web Services -API als programmatische Alternative zum Objektmodell verwenden können.

Andere Tipps

Die Rayn -Lösung (siehe Post -Kommentare) hat mir die Idee, PowerShell CMDLT aus meinem Code auszuführen, mit:

System.management.Automation

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

Aber ich habe immer noch ein Problem:

Ausführen dieses CMD "Get-Process": Ich habe das Ergebnis bekommen.

Ausführen dieser CMD "Import -SPWEB -Identität 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.

Das Ausführen der zweiten CMD im PowerShell -Fenster verursacht kein Problem und ich habe meine Website importiert.

Lösung :

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

Gibt es keine Möglichkeit, eine gegenwärtige Arbeitsstelle mit einem anderen Namen zu duplizieren? Der Grund dafür ist, dass ich Änderungen an unserer Prod -Site vornehmen möchte und die Änderungen auf einer Testseite testen möchte, für die ich unsere Prod -Site replizieren müsste.

Vielen Dank

Es gibt einen Grund, warum Microsoft dies eingeschränkt hat und sie sind nicht klar, ich habe das gleiche Problem vorhanden und stellte fest, dass

-> Es ist ein Objekt -Cache -Problem, da es die gleichen Richtlinien verwendet

Eine Problemumgehung, um eine Kopie in derselben WebApp zu erstellen, besteht darin, die Site -Sammlung in verschiedene Inhaltsdbs wiederherzustellen (z. Probleme werden da sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top