PowerShell SharePoint管理の始め方

SharePoint管理センターに飽きたり、不十分だと感じたりして、コマンドラインに切り替えたいですか?はい、PowerShell SharePoint Online Managementモジュールを使用すれば可能です。

このモジュールを使用すると、通常SharePoint管理センターで行うタスクをPowerShellで実行できます。さらに、SharePoint Onlineのタスクを自動化することもできます。

このチュートリアルでは、PowerShell SharePoint Online Managementの基礎を学びます。モジュールのインストール方法、一般的な管理タスクの実行方法、および繰り返しのアクションの自動化方法を学びます。さあ、どこにも行かずにすぐに始めましょう!

前提条件

このチュートリアルは実演形式です。一緒にやりたい場合は、次のものを用意してください:

  • Microsoft 365テナントでSharePoint管理者ロールまたはそれ以上の権限を持っている必要があります。
  • SharePoint Onlineの管理URLとポータルURLを把握している必要があります。テナントでSharePoint Onlineの管理URLを取得する方法については、このリンクを参照してください。

このチュートリアルでは、ポータルURLをHTTPS://lzex.sharepoint.com、管理URLをHTTPS://lzex-admin.sharepoint.comとして使用します。

  • Windows PowerShell 5.1またはWindows上の最新のPowerShell 7。このチュートリアルでは、Windows 10上のWindows PowerShell 5.1を使用します。

PowerShell SharePoint Onlineモジュールのインストール

PowerShellを使用してSharePoint Onlineを管理するには、まずPowerShell SharePoint Online Managementモジュールをインストールする必要があります。このモジュールには、SharePointオンライン組織とリソースに接続して管理するためのコマンドレットが提供されています。

PowerShell SharePoint Onlineモジュールをインストールする最も迅速かつ便利な方法は、Install-Moduleコマンドレットを使用してPowerShellギャラリーからインストールすることです。以下の手順に従ってください。

1. 管理者としてPowerShellを開きます。

2. 次に、以下のコマンドを実行します。このコマンドはMicrosoft.Online.SharePoint.PowerShellモジュールをインストールします。

Install-Module -Name Microsoft.Online.SharePoint.PowerShell

3. モジュールのインストールが成功したことを確認するには、以下のコマンドを実行してモジュール情報を取得します。

Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ListAvailable | Select-Object Name,Version

このコマンドは、モジュールの名前とバージョンを返します。下記のように、このコンピューターにはMicrosoft.Online.SharePoint.PowerShellモジュールの1つのバージョンがあります。この執筆時点での最新バージョンは16.0.22615.12000です。

Listing the PowerShell SharePoint Online module information

4. 最後に、PowerShellで以下のコマンドを実行してSharePointモジュールをインポートしてください。

注意: PowerShell SharePoint OnlineモジュールはPowerShell 7と動作しますが、-UseWindowsPowerShellスイッチを使用してモジュールを明示的にインポートする必要があります。

# Windows PowerShell 5.1で
Import-Module Microsoft.Online.SharePoint.PowerShell

# PowerShell 7xで
Import-Module Microsoft.Online.SharePoint.PowerShell -UseWindowsPowerShell

承認されていない動詞に関する警告を無視してください。この警告は、Get-Verbリストで承認された動詞で始まらないコマンドレットについて警告しますが、モジュールの機能に影響しません。

この警告を回避するには、Import-Moduleコマンドレットに-DisableNameCheckingスイッチを追加してください。

Importing the PowerShell SharePoint Online module

PowerShell SharePoint Onlineに接続

PowerShell SharePoint Onlineセッションに接続する準備ができました。ただし、接続の構文と方法は、管理者アカウントの多要素認証の状態によって異なります。

MFAなしの管理者アカウント

管理者アカウントがMFAで有効になっていない場合は、次のコマンドを実行してくださいConnect-SPOService-Urlパラメーターの後に管理者のURLを指定し、-Credentialパラメーターの後にユーザー プリンシパル名 (UPN)を指定します。

Connect-SPOService -Url <https://tenant-admin.sharepoint.com/> -Credential spoadmin@domain.com

次のプロンプトでパスワードを入力し、Enter キーを押します。

Connect SPOService
Connecting to PowerShell SharePoint online without MFA

-Credentialパラメーターは、Get-Credentialコマンドレットで作成できるPSCredentialオブジェクトも受け入れます。

MFAを使用した管理者アカウント

MFA管理者アカウントの場合、以下の手順に従ってPowerShell SharePoint Onlineセッションに接続します。

1. PowerShellで以下のコマンドを実行します。正しいSharePoint管理者のURLを指定してください。

Connect-SPOService -Url https://tenant-admin.sharepoint.com/

2. ポップアップするサインインウィンドウで、管理者のユーザー名を入力し、[次へ]をクリックします。

Type the SharePoint admin username

3. 次に、管理者アカウントのパスワードを入力し、[サインイン]をクリックします。

Enter the account password

4. 最後に、MFAのチャレンジを完了します。アカウントのMFAを構成した方法によっては、以下のスクリーンショットとは異なる場合があります。

Completing the MFA challenge

これらの手順を完了すると、PowerShell SharePointオンライン接続がアクティブになります。

PowerShell SharePointモジュールを使用したサイト、ユーザー、およびグループの管理

PowerShellを介して、SharePointが提供する一部の機能をSharePoint Onlineおよびさまざまなリソースに対して実行できます。このセクションでは、サイトの作成、グループの作成、ユーザーの追加、ユーザーのグループからの削除、およびユーザーレポートの生成など、典型的なSharePoint Onlineタスクを実行します。

新しいSharePointサイトの作成

New-SPOSiteコマンドを活用すると、新しいSharePoint Onlineサイトを作成できます。新しいモダンなチームサイトサイトMy First Team Siteを作成する場合は、以下の手順を実行します。

1. まず、チームサイトのテンプレート名を取得します。

Get-SPOWebTemplate

新しいサイトに適用したいテンプレートを探してください。この例では、チームサイト(Microsoft 365 グループなし)テンプレートの名前値をコピーします。STS#3。

Listing all available SharePoint web templates

2。次に、以下のコマンドを実行して、モダンなチームサイトを作成します。以下のパラメータが完全であることを確認してください。

  • Url - 新しいサイトの URL を指定します。この URL 構造は次の規則に従います - HTTPS://<tenant>.sharepoint.com/sites/<site-slug>。

URL が一意であることを確認してください。サイトがリサイクル ビンにある場合でも、同じ URL を持つサイトが存在すると、サイトの作成に失敗します。

  • Title – 新しいサイトのタイトルを設定します。
  • Owner - サイト所有者のユーザー プリンシパル名を割り当てます。

注意: 指定した所有者が管理者ロールを持っている場合、SPO は自動的に企業管理者グループをサイト所有者として設定します。

  • Template – 新しいサイトに適用する Web テンプレートを示します。
  • StorageQuota - サイトのストレージ容量制限値を MB 単位で構成します。

注意: StorageQuota 値は、SharePoint Online 組織のサイトのストレージ制限が手動に設定されている場合のみ有効です。設定が自動的な場合は、テナントの総ストレージ容量が優先されます。

New-SPOSite `
    -Url 'https://lzex.sharepoint.com/sites/MyFirstTeamSite' `
    -Title 'My First Team Site' `
    -Owner '[email protected]' `
    -Template 'STS#3' `
    -StorageQuota 1000

サイトの作成が成功した場合、PowerShell で応答やメッセージは表示されません。

3. 新しいサイトが存在することを確認するには、Get-SPOSite コマンドレットを実行してください。

Get-SPOSite -Identity 'https://lzex.sharepoint.com/sites/MyFirstTeamSite'
Getting the new SPO site details

4. 最後に、SharePoint サイトの URL を Web ブラウザで開いて、サイトが正常に動作するか確認してください。

Opening the new SPO site in the browser

サイトグループの作成とユーザーの追加

新しい SPO サイトを作成したら、特定の権限レベルでグループを作成し、ユーザーを追加できます。このセクションでは、どのようにしてグループを作成し、ユーザーをそれらのグループに追加するかを学びます。

まず、以下のテーブルの仕様に従ってグループを作成します。

権限レベルのリストを取得するには、SharePoint Server のユーザー権限と権限レベルのドキュメントを参照してください。

Site Group PemissionLevels
https://tenant.sharepoint.com/sites/MyFirstTeamSite Editing Team Edit
https://tenant.sharepoint.com.sites/MyFirstSite Design Team Design

グループを作成するには、New-SPOSiteGroup コマンドレットを実行します。以下のコマンドを実行してグループを作成します。

# サイトの URL を定義します。
$siteURL = '<https://lzex.sharepoint.com/sites/MyFirstTeamSite>'
# 'Editing Team' グループを作成し、サイトに '編集' 権限を付与します。
New-SPOSiteGroup -Site $siteURL -Group 'Editing Team' -PermissionLevels Edit
# 'Design Team' グループを作成し、サイトに 'デザイン' 権限を付与します。
New-SPOSiteGroup -Site $siteURL -Group 'Design Team' -PermissionLevels Design
Creating new groups on the SPO site

次に、グループのメンバーになるユーザーを追加します。これを行うには、以下のAdd-SPOUser コマンドを実行します。

# 'Editing Team' サイトグループにユーザーを追加します。
Add-SPOUser -Site $siteURL -Group 'Editing Team' –LoginName spoeditor@lzex.ga
# 'Design Team' サイトグループにユーザーを追加します。
Add-SPOUser -Site $siteURL -Group 'Design Team' –LoginName spodesigner@lzex.ga

各コマンド実行後、以下のスクリーンショットのような結果が得られます。

Adding users to SPO site groups

サイトユーザーリストの生成

Get-SPOUserコマンドを活用することで、サイトにアクセスできるユーザーを生成できます。

以下のコマンドを実行して、My First Team Siteのユーザーリストを生成します。

Get-SPOUser -Site <https://lzex.sharepoint.com/sites/MyFirstTeamSite> | Format-Table -Wrap -AutoSize | Out-File <path-to-savereport> -Force -Width 360 -Append

結果は以下のスクリーンショットと同様になります。出力には、ユーザーのリストとそれらのグループメンバーシップが表示されます。

Getting the list of users on the SPO site

結果をCSVXMLJSON、YAMLHTML、プレーンテキストなど、さまざまなファイル形式に出力することもできます。

サイトグループからユーザーを削除

ユーザーを削除する必要がある場合があります。たとえば、ユーザーを誤ったグループに追加した場合や、ユーザーがチームから離れた場合などです。このタスクにはRemove-SPOUserコマンドレットが適しています。

たとえば、以下のコマンドを実行して、[email protected]ユーザーをDesign Teamから削除します。

Remove-SPOUser `
    -LoginName spodesigner@lzex.ga `
    -Site <https://lzex.sharepoint.com/sites/MyFirstTeamSite> `
    -Group 'Design Team'

このように、Design TeamUsersリストは、唯一のメンバーを削除した後は空になります。

Removing a user for the SPO site group

PowerShell SharePoint Onlineの自動化に使用

PowerShellを使用しているので、自動化のためにその機能を活用できます。たとえば、複数のサイトを作成する際には、スクリプトを使用するとより実用的です。

PowerShell SharePoint Online New-SPOSiteコマンドをImport-CsvやForEach-Objectのような組み込みコマンドと組み合わせることができます。以下の手順は、異なるプロパティを持つ複数のサイトを作成する例を示しています。

1. 以下のコマンドを実行して、sites.csvという新しいCSVファイルを作成します。

New-Item -Type File -Path .\sites.csv

2. 次に、テキストエディタでCSVファイルを開きます。この例ではnotepad.exeを使用しています。

notepad.exe .\sites.csv

3. 以下のテキストをCSVファイルにコピーし、保存します。OwnerとUrlの値を組織に合わせて置き換えてください。

Owner,StorageQuota,Url,Template,Name
spoadmin@lzex.ga,100,https://lzex.sharepoint.com/sites/new-site,STS#0,New Site
ata_dev@lzex.ga,100,https://lzex.sharepoint.com/sites/dev-site,DEV#0,Dev Site

CSVファイルは、以下のスクリーンショットのようになります。

Creating the CSV list of new sites

4. PowerShellで次のスクリプトを実行します。

Import-Csv .\sites.csv | ForEach-Object {
    New-SPOSite `
        -Owner $_.Owner `
        -StorageQuota $_.StorageQuota `
        -Url $_.Url `
        -Template $_.Template `
        -Title $_.Name `
        -NoWait
}

エラーがない場合、追加の結果は表示されません。

Creating multiple sites using the PowerShell SharePoint online script

5. 最後に、新しいサイトが存在することを確認するために、以下のコマンドを実行します。

Import-Csv .\sites.csv | ForEach-Object {
    Get-SPOSite -Identity $_.Url | Select-Object Title,Url,Owner
}
Listing the new sites

この手法は、サイトグループの作成やサイトグループのメンバーシップの更新など、大量のタスクを自動化するために実行した手法を適用できます。

結論

PowerShell SharePoint Online モジュールを使用すると、SharePoint Online 組織の管理を向上させることができます。このモジュールは SharePoint 管理センターを置き換えるものではなく、SharePoint Online スキルを補完するツールとして使用されます。

PowerShell SharePoint Online モジュール以外にも、PowerShell で SharePoint Online を管理するための別のモジュールがあることを知っていましたか?はい、それがPnP PowerShellモジュールです。なぜそれも探索して、どちらが最適か比較してみませんか?

Source:
https://adamtheautomator.com/powershell-sharepoint/