由于我们无法将SharePoint站点(启用发布功能)保存为模板,因此我正在寻找一种以编程方式执行此操作的方法:

在同一sitecollection下制作带有新名称“ siteb”的“ SITEA”的副本

http:// spserver/collection/sitea

http:// spserver/collection/siteb

有帮助吗?

解决方案

我认为最简单的方法是进行出口,然后进行进口。这应该在没有重复的GUID问题的情况下起作用。 PowerShell CMDLET是导出SPWEB和Import-Spweb。

从程序上讲,内容迁移API(有时称为“ Prime”)中有等效的。这些在 Microsoft.sharepoint.Deployment名称空间. 。您使用 Spexport 课程以导出内容迁移包,然后 Spimport 进行导入。

有内容迁移的概述 MSDN. 。不要忘记,您还可以使用Web服务API,作为对象模型的程序化替代方法。

其他提示

Rayn的解决方案(请参阅后注释)为我带来了一个想法,可以使用以下方式从我的代码中运行PowerShell CMDLT。

System.Management.Automation

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

但是我仍然有一个问题:

运行此CMD“ Get-Process”:我得到了结果。

运行此cmd“导入spweb-身份 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.

在PowerShell窗口上运行第二个CMD会导致没有问题,我导入了我的网站。

解决方案 :

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

是否有可能用其他名称复制当前的工作网站?原因是我想对我们的产品网站进行更改,并想测试我需要复制我们的产品网站的测试网站上的更改。

谢谢

Microsoft限制了这一点,并且他们对此不清楚是有原因的,我遇到了同样的问题,发现

- >它是一个对象缓存问题,因为它使用了相同的GUIDS

在同一WebApp中制作副本的一个解决方法是将站点集合还原为不同的内容DB(例如,将当前内容db脱机,添加新的内容db和还原),我尚未正确测试,但我认为对象缓存问题将存在。

许可以下: CC-BY-SA归因
scroll top