Copy-SPSite 実行後、コピー先サイトに接続ができない場合の対処法。

皆様こんにちは!SSS担当です!
東京には雪が降ると噂がありましたが、結局降らず良いような悪いような…。
寒いですが体調崩されていないでしょうか?

さて、タイトルの通り、SharePointのオンプレミス(2013, 2016, 2019)で使用できるPowerShell「Copy-SPSite」コマンドについて、ナレッジの少ない事象を発見致しました。

【事象】

サイトコレクションのコンテンツデータベースやURLを変更するためによく使用される 「Copy-SPSite」 ですが、正常に実行完了しても、コピー先URLにアクセスすると 404 エラーでサイトが表示されないことがあります。
また、404で表示されないサイトは全体管理から見ると、サイト情報がない状態で存在しており、「Remove-SPSite」で削除することもできなくなります。

コマンドは正常完了しますが…
サイトは404で存在しません
もう一度実行しようとすると、既に存在すると怒られてしまいます…。

【原因】

実はこの 「Copy-SPSite」コマンド、 -TargetUrl のパラメータの最後に「/」がついているとうまく実行完了できません。

NGパターン

Copy-SPSite http://sp201904/sites/test01 -DestinationDatabase testContentDB -TargetUrl http://sp201904/sites/test01_copy/  

OKパターン

Copy-SPSite http://sp201904/sites/test01 -DestinationDatabase testContentDB -TargetUrl http://sp201904/sites/test01_copy 

【解決方法】

以下のように「ForceDeleteSite」を使用して宙に浮いてしまっているサイトを削除し、(完全に削除されるまで少し待ってから)あらためて「/」なしで Copy-SPSiteを実行しましょう。

$siteUrl = "http://sp201904/sites/test01_copy"
$site = get-spsite $siteUrl
$siteId = $site.Id
$siteDatabase = $site.ContentDatabase
$siteDatabase.ForceDeleteSite($siteId, $false, $false)
削除後少し待てば、Copy-SPSiteの再実行が可能です

SSSではこのようにSharePoint オンプレミスの質問やお困りごとにも対応しております。
もし興味がありましたらお気兼ねなく「お問合せ」からご連絡下さい。