新しい名前でSharePointサイトのコピーを作成する
-
16-10-2019 - |
質問
SharePointサイト(公開機能を有効にして)をテンプレートとして保存することはできないため、これをプログラムで行う方法を探しています。
同じSiteCollectionの下に新しい名前「SiteB」を持つ「Sitea」のコピーを作成します
解決
最も簡単な方法は、エクスポートに続いて輸入を行うことだと思います。それは、複製されたGUID問題なしに機能するはずです。 PowerShell cmdletsは、エクスポートSPWEBおよびインポートSPWEBです。
プログラムでは、コンテンツ移行API(「Prime」と呼ばれることもあります)には、これらに相当します。これらはにあります Microsoft.SharePoint.Deployment名空間. 。あなたはを使用します spexport コンテンツ移行パッケージをエクスポートするクラス、そして Spimport インポートを行う。
コンテンツの移行の概要があります MSDN. 。 Web Services APIをオブジェクトモデルのプログラム的な代替品として使用できることを忘れないでください。
他のヒント
Rayn's Solution(投稿のコメントを参照)は、以下を使用してコードからPowerShell cmdltを実行するというアイデアを私に与えてくれました。
System.Management.Automation
Collection<String> results = PowerShell.Create().AddScript(Ps).Invoke<String>();
しかし、私にはまだ問題があります:
このCMD「Get-Process」を実行する:結果が得られました。
この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.
PowerShellウィンドウで2番目の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();
現在の作業サイトを別の名前で複製する可能性はありませんか?その理由は、私たちの製品サイトに変更を加えたいと考えており、私たちの製品サイトを複製する必要があるテストサイトで変更をテストしたいと思います。
ありがとう
マイクロソフトがこれを制限した理由があり、彼らはそれについて明確ではありません、私は同じ問題に直面し、それを発見しました
- >同じガイドを使用しているため、そのオブジェクトキャッシュの問題
同じWebAppでコピーを作成する1つの回避策は、サイトコレクションを異なるコンテンツDBに復元することです(現在のコンテンツDBをオフラインにし、新しいコンテンツDBを追加して復元するなど)、これを適切にテストしていませんが、オブジェクトキャッシュは問題が発生します。