PowerShellを活用することで、SharePoint On-Premise環境におけるサイトコレクションの一括作成が効率的に行えます。特に、手作業では時間がかかる大規模なサイト構造の展開や、一貫性のある設定を必要とする場合に効果を発揮します。本記事では、PowerShellを用いたサイトコレクションの作成方法を詳しく解説し、初心者から中級者まで役立つ情報を提供します。さらに、応用例やよくあるトラブルの解決策も紹介し、スクリプト運用の理解を深めます。
SharePoint On-Premiseとは
SharePoint On-Premiseは、組織内のサーバーにインストールして運用するMicrosoftのコラボレーションおよびドキュメント管理プラットフォームです。
オンプレミス型の特徴
オンプレミス型では、データの保存や管理を完全に制御できるため、以下のようなメリットがあります。
- データセキュリティの管理: 機密情報を外部に出さず、完全に社内で管理できます。
- カスタマイズの柔軟性: 特定の業務要件に応じて、機能やデザインをカスタマイズ可能です。
- オフライン環境での利用: インターネット接続がなくても運用できます。
クラウド型との違い
クラウド型であるSharePoint Onlineと比較すると、以下の点で異なります。
- サーバーの管理やメンテナンスが必要。
- 初期導入コストが高い。
- クラウド型に比べアップグレードが手動になる。
SharePoint On-Premiseでの運用例
- 社内ポータルの構築
- ドキュメント管理システムの実装
- プロジェクト管理やワークフローの標準化
本記事では、SharePoint On-Premise環境におけるPowerShellを活用したサイトコレクションの作成に焦点を当て、効率的な運用方法を紹介します。
PowerShellを使うメリット
PowerShellは、SharePoint On-Premiseの管理や運用において非常に強力なツールです。特に一括操作やスクリプトによる自動化に適しており、手動作業に比べて効率性や正確性が大幅に向上します。以下にその主な利点を挙げます。
自動化による効率化
PowerShellを使用することで、大量のサイトコレクションを短時間で作成することが可能です。たとえば、以下のようなタスクを一度に実行できます。
- 数十から数百のサイトコレクションの一括生成
- ユーザー権限や設定の適用
これにより、管理者の負担を軽減し、手動操作によるミスを防げます。
再利用可能なスクリプト
PowerShellスクリプトを作成しておけば、同じタスクを何度でも再利用できます。これにより、同様の設定や構造が必要な場合、短時間で環境を構築できます。たとえば、以下のようなケースに活用可能です。
- テンプレートベースのサイトコレクション作成
- 定期的なメンテナンススクリプトの実行
柔軟な設定の適用
PowerShellでは、SharePointのGUIでは設定できない詳細なパラメータを指定することができます。これにより、カスタマイズ性が向上し、要件に応じた高度な設定が可能です。たとえば:
- 特定のサービスアカウントの割り当て
- カスタムURLの指定
ログ記録とエラーハンドリング
PowerShellでは、実行結果をログとして記録することが可能です。エラーが発生した場合も、スクリプト内で適切に処理を行い、問題を特定しやすくなります。
これらのメリットにより、PowerShellはSharePoint On-Premise環境での管理・運用において欠かせないツールといえます。次のセクションでは、具体的なサイトコレクション作成手順について解説します。
サイトコレクションの作成手順
SharePoint On-Premiseでサイトコレクションを作成するには、PowerShellを用いる方法が効果的です。このセクションでは、具体的な手順をわかりやすく解説します。
前提条件
PowerShellでサイトコレクションを作成する前に、以下の準備が必要です。
- SharePoint Management Shellがインストールされていること
- サイトコレクションを作成する権限を持つ管理者アカウント
- サイトコレクションの情報(タイトル、URL、管理者、テンプレートなど)
基本コマンドの紹介
サイトコレクションを作成するには、以下のPowerShellコマンドを使用します。
New-SPSite -Url "<サイトのURL>" `
-OwnerAlias "<管理者アカウント>" `
-Language <言語コード> `
-Template "<テンプレート名>" `
-Name "<サイトコレクション名>"主なパラメータの説明
-Url: サイトコレクションのURLを指定します(例:http://server/sites/example)。-OwnerAlias: サイトコレクションの管理者アカウントを指定します。-Language: サイトの言語コード(例: 1033は英語、1041は日本語)。-Template: 使用するテンプレート(例:STS#0はチームサイト)。-Name: サイトコレクションの名前。
実行例
以下は、チームサイトのサイトコレクションを作成する例です。
New-SPSite -Url "http://server/sites/teamsite" `
-OwnerAlias "domain\admin" `
-Language 1041 `
-Template "STS#0" `
-Name "チームサイト"複数のサイトコレクションを一括作成する場合
複数のサイトコレクションを作成する際は、CSVファイルを利用することで効率化できます。以下の手順を実行します。
- CSVファイルの準備: 以下のような構造で
sites.csvを作成します。
Url,OwnerAlias,Language,Template,Name
http://server/sites/site1,domain\admin,1041,STS#0,サイト1
http://server/sites/site2,domain\admin,1041,STS#0,サイト2- スクリプトで読み込みと作成を実行:
$sites = Import-Csv -Path "sites.csv"
foreach ($site in $sites) {
New-SPSite -Url $site.Url `
-OwnerAlias $site.OwnerAlias `
-Language $site.Language `
-Template $site.Template `
-Name $site.Name
}この手順を実行することで、大量のサイトコレクションを効率的に作成できます。次のセクションでは、サンプルスクリプトの詳細解説に進みます。
サンプルスクリプトの詳細解説
ここでは、SharePoint On-Premise環境におけるサイトコレクションの一括作成を目的としたPowerShellスクリプトを具体的に解説します。このサンプルスクリプトは、CSVファイルを使用して複数のサイトコレクションを効率的に作成する構成になっています。
スクリプトの全体像
以下は、CSVファイルを読み込んでサイトコレクションを作成するスクリプトの全体です。
# CSVファイルのパスを設定
$csvPath = "C:\Scripts\sites.csv"
# CSVファイルの読み込み
$sites = Import-Csv -Path $csvPath
# サイトコレクション作成のループ処理
foreach ($site in $sites) {
try {
# サイトコレクション作成コマンド
New-SPSite -Url $site.Url `
-OwnerAlias $site.OwnerAlias `
-Language $site.Language `
-Template $site.Template `
-Name $site.Name
Write-Host "サイトコレクションを作成しました: $($site.Name)" -ForegroundColor Green
}
catch {
Write-Host "エラー発生: $($_.Exception.Message)" -ForegroundColor Red
}
}各部分の詳細解説
1. CSVファイルのパス設定
$csvPath = "C:\Scripts\sites.csv"
この部分で、CSVファイルの保存場所を指定します。ファイルには作成したいサイトコレクションの情報を記載します。
2. CSVファイルの読み込み
$sites = Import-Csv -Path $csvPathImport-Csvコマンドを使用してCSVファイルの内容を読み込みます。このコマンドは、ファイルの各行をPowerShellのオブジェクトとして取り扱うことを可能にします。
3. サイトコレクションの作成ループ
foreach ($site in $sites) {
try {
# サイトコレクション作成
}
catch {
# エラー処理
}
}foreachを用いてCSVファイルから読み込んだ各行を処理します。try-catch構文を使用して、エラーが発生した場合に適切なメッセージを表示します。
4. サイトコレクション作成コマンド
New-SPSite -Url $site.Url `
-OwnerAlias $site.OwnerAlias `
-Language $site.Language `
-Template $site.Template `
-Name $site.NameNew-SPSiteコマンドを用いてサイトコレクションを作成します。各プロパティはCSVファイルのカラムと対応しています。
5. ログとエラー処理
Write-Host "サイトコレクションを作成しました: $($site.Name)" -ForegroundColor Green
catch {
Write-Host "エラー発生: $($_.Exception.Message)" -ForegroundColor Red
}
処理結果をログとして画面に出力します。成功時は緑、エラー時は赤で表示し、視認性を向上させています。
CSVファイルの例
以下はCSVファイルの内容例です。
Url,OwnerAlias,Language,Template,Name
http://server/sites/site1,domain\admin,1041,STS#0,サイト1
http://server/sites/site2,domain\admin,1041,STS#0,サイト2
http://server/sites/site3,domain\admin,1041,STS#0,サイト3このスクリプトを使用することで、複数のサイトコレクションを簡単に一括作成できます。次のセクションでは、さらに応用的な設定を含む方法を紹介します。
応用例:複数のテンプレートや設定を利用する場合
PowerShellを使ったサイトコレクションの一括作成では、異なるテンプレートや設定を柔軟に利用することが可能です。このセクションでは、複雑な要件に対応するための応用例を紹介します。
異なるテンプレートを使用するサイトの作成
複数のサイトコレクションで異なるテンプレートを使用する場合、CSVファイルにテンプレート情報を含めることで対応できます。以下にCSVファイルとスクリプトの例を示します。
CSVファイルの例
Url,OwnerAlias,Language,Template,Name
http://server/sites/teamsite1,domain\admin,1041,STS#0,チームサイト1
http://server/sites/publishingsite,domain\admin,1041,PUBSITE#0,公開サイト
http://server/sites/projectsite,domain\admin,1041,PROJECTSITE#0,プロジェクトサイトスクリプトの例
$csvPath = "C:\Scripts\sites.csv"
$sites = Import-Csv -Path $csvPath
foreach ($site in $sites) {
try {
New-SPSite -Url $site.Url `
-OwnerAlias $site.OwnerAlias `
-Language $site.Language `
-Template $site.Template `
-Name $site.Name
Write-Host "作成成功: $($site.Name) with Template $($site.Template)" -ForegroundColor Green
}
catch {
Write-Host "エラー: $($_.Exception.Message)" -ForegroundColor Red
}
}これにより、サイトコレクションごとに異なるテンプレートを指定して作成できます。
カスタム権限の適用
サイトコレクション作成時に、特定のグループやユーザーにカスタム権限を割り当てることができます。
スクリプト例
以下は、作成したサイトに特定の権限を割り当てる例です。
$csvPath = "C:\Scripts\sites.csv"
$sites = Import-Csv -Path $csvPath
foreach ($site in $sites) {
try {
$newSite = New-SPSite -Url $site.Url `
-OwnerAlias $site.OwnerAlias `
-Language $site.Language `
-Template $site.Template `
-Name $site.Name
# 権限設定
$web = $newSite.RootWeb
$group = $web.SiteGroups["Visitors"]
$web.RoleAssignments.Add($group, $web.RoleDefinitions["Read"])
Write-Host "作成成功と権限適用: $($site.Name)" -ForegroundColor Green
}
catch {
Write-Host "エラー: $($_.Exception.Message)" -ForegroundColor Red
}
}この例では、VisitorsグループにRead権限を割り当てています。
サブサイトの自動作成
サイトコレクション作成後に、自動でサブサイトを追加することも可能です。
スクリプト例
$csvPath = "C:\Scripts\sites.csv"
$sites = Import-Csv -Path $csvPath
foreach ($site in $sites) {
try {
$newSite = New-SPSite -Url $site.Url `
-OwnerAlias $site.OwnerAlias `
-Language $site.Language `
-Template $site.Template `
-Name $site.Name
$web = $newSite.RootWeb
$subsite = $web.Webs.Add("subsite", "サブサイト", "サブサイトの説明", $site.Language, "STS#0", $true, $false)
Write-Host "サイトとサブサイトを作成しました: $($site.Name)" -ForegroundColor Green
}
catch {
Write-Host "エラー: $($_.Exception.Message)" -ForegroundColor Red
}
}応用の利点
これらの応用例を活用することで、以下のような複雑な要件に対応できます。
- 異なるテンプレートを使用する多様なサイト構成
- 権限設定の自動化による運用負荷の軽減
- 階層構造を持つサイト構成の自動生成
次のセクションでは、トラブルシューティング方法について解説します。
トラブルシューティング:よくある問題と解決策
PowerShellを使用してSharePointのサイトコレクションを作成する際、さまざまな問題が発生することがあります。このセクションでは、よくあるトラブルとその解決策を解説します。
エラー1: アクセス許可の不足
問題
PowerShell実行時に「アクセスが拒否されました」や「権限不足」のエラーが表示される場合があります。
原因
- サイトコレクションを作成するための十分な権限が管理者アカウントに付与されていない。
- PowerShellが管理者権限で実行されていない。
解決策
- SharePoint Management Shellを管理者権限で実行します。
- 実行中のアカウントに以下の権限を確認または付与します。
- SharePointファーム管理者権限
- サイトコレクション管理者権限
Add-SPShellAdmin -UserName "domain\admin"エラー2: サイトURLの競合
問題
「指定されたURLはすでに存在します」というエラーが発生することがあります。
原因
- 同じURLを持つサイトコレクションが既に存在している。
- 作成したいURLが予約済みまたは削除されていない。
解決策
- 指定したURLが使用されていないことを確認します。
Get-SPSite -Identity "http://server/sites/example"- 必要に応じて既存のサイトコレクションを削除します。
Remove-SPSite -Identity "http://server/sites/example"エラー3: CSVファイルの形式不正
問題
「スクリプトの実行中にCSVファイルから値を読み取れません」や「プロパティが見つかりません」というエラーが発生する。
原因
- CSVファイルの列名やデータ形式がスクリプトと一致していない。
- CSVファイルの保存形式がUTF-8ではない。
解決策
- CSVファイルの列名がスクリプトで使用するプロパティ名と一致しているか確認します。
正しい例:
Url,OwnerAlias,Language,Template,Name- UTF-8形式でCSVファイルを保存します。Excelを使用する場合、「名前を付けて保存」でUTF-8形式を選択してください。
エラー4: 言語コードやテンプレートの間違い
問題
「指定されたテンプレートが見つかりません」や「無効な言語コード」というエラーが表示される。
原因
- 言語コードやテンプレート名が正しくない。
- 環境に必要なテンプレートがインストールされていない。
解決策
- 使用可能なテンプレートを確認します。
Get-SPWebTemplate- 環境で有効なテンプレート名と言語コードを確認してスクリプトに反映します。
エラー5: サーバーリソースの不足
問題
サイトコレクション作成が途中で停止する、またはタイムアウトエラーが発生する。
原因
- サーバーのリソース(CPUやメモリ)が不足している。
- サイト作成のバッチ処理が多すぎる。
解決策
- サーバーリソースを監視し、負荷を軽減します。
- サイトコレクション作成を少数ずつ実行する。
- オフピーク時間帯に処理を実行する。
- タスクごとに一定の遅延を設けて負荷を分散させる。
Start-Sleep -Seconds 5まとめ
PowerShellでSharePointのサイトコレクションを作成する際、事前に発生しうる問題を理解し、適切に対処することでスムーズな運用が可能になります。特に権限、URLの競合、CSV形式に注意を払い、必要に応じてログを活用してください。次のセクションでは、本記事の内容を簡潔にまとめます。
まとめ
本記事では、PowerShellを使用してSharePoint On-Premiseのサイトコレクションを一括作成する方法を詳しく解説しました。基本的なコマンドの使い方からCSVを利用した一括作成のスクリプト例、さらには異なるテンプレートや設定の応用例、よくある問題とその解決策まで網羅的に取り上げました。
PowerShellを活用することで、手作業に比べて効率的かつ正確にサイトコレクションを構築できるため、管理者の負担を軽減し、運用の信頼性を向上させることができます。適切なエラーハンドリングやログ管理を組み込むことで、トラブルにも迅速に対応可能です。
この記事の内容を活用して、SharePoint On-Premise環境の運用をより効率的に進めてください。

コメント