【備忘録】PowerShellでSharePoint Listsを自動生成!手順を解説

IT

SharePoint Listsの作成や展開、手作業だと面倒ですよね。
PowerShellとPnP.PowerShellを使えば、これらの作業を自動化できます!

この記事では、環境構築からコマンドの実行まで、丁寧に手順を解説します。
初心者の方も、ぜひチャレンジしてみてください。

PowerShell 環境構築の概要

本記事では、大きく3ステップでPowerShellからSharePoints Listsを作成するための環境構築を紹介します。それぞれのステップで何をしているのか?をここでは簡単に説明します。

  1. PowerShellを開く
    PCでPowerShellを開きます。
  2. PowerShell 7をインストールする
    PowerShellのバージョンを確認します。
    バージョンは7以降でないと、PnP.PowerShellの最新バージョンが利用できません。
    対象バージョンでない場合、PowerShell 7をインストールします。
  3. PnP.PowerShellをインストールする
    PowerShell 7に、PnP.PowerShellモジュールをインストールします。
    PnP.PowerShellがインストールされていることを確認します。
    最後に、簡単なサンプルコードを利用して、SharePointのサイトにListsを追加してみます。

※OSは、Windows11を前提として進めます。
※Macをご利用の場合、本記事手順では設定できない可能性がありますこと、ご了承ください。

実際に環境構築してみよう

それでは、ここから3ステップでPowerShellの環境構築を進めます。

PowerShellを開く

1-1.デスクトップ画面下の[ウィンドウ]アイコンをクリックし、[PowerShell]と検索して表示される「Windows PowerShell」の[管理者として実行する]をクリックします。
※以降「PowerShellを開く」と記載した場合は、この手順を実施してください。

1-2.ユーザーアカウント制御の画面が表示される場合は、[はい]をクリックします。

1-3.Windows PowerShellのターミナル画面が表示されます。

PowerShell 7をインストールする

2-1.PowerShellのバージョンを確認します。PowerShellのターミナル画面に以下のコマンドを入力し、[Enter]キーを押下します。

$PSVersionTable

出力される結果を確認します。
下画像のように、PSVersionが7より小さい数字の場合は、PowerShell 7をインストールする必要があります。次の手順に進みます。(すでにPSVersionが7以降の場合は、次の章へ進みます。)

2-2.PowerShellのターミナル画面に以下のコマンドを入力し、[Enter]キーを押下します。
※最新のPowerShellバージョンを検索します。

winget search Microsoft.PowerShell

[すべてのソース契約条件に同意しますか?]という旨のメッセージが表示されるので、[Y]を入力し、[Enter]キーを押下します。

最新のPowerShellバージョンが表示されます。内容を確認し、次の手順に進みます。

2-3.PowerShellのターミナル画面に以下のコマンドを入力し、[Enter]キーを押下します。
※検索で表示された最新のPowerShellバージョン(1行目モジュール)をインストールします。

winget install --id Microsoft.Powershell --source winget

しばらく、インストール進捗バーが表示され、[インストールが完了しました]という旨のメッセージが表示されます。

2-4.PowerShellのターミナル画面に以下のコマンドを入力し、[Enter]キーを押下します。
※検索で表示された最新のPowerShellバージョン(2行目モジュール)をインストールします。

winget install --id Microsoft.Powershell.Preview --source winget

しばらく、インストール進捗バーが表示され、[インストールが完了しました]という旨のメッセージが表示されます。

2-5.デスクトップ画面下の[ウィンドウ]アイコンをクリックし、[PowerShell]と検索して表示される「PowerShell 7(x64)」の[タスクバーにピン留めする]をクリックします。
※以降「PowerShellを開く」と記載した場合は、「PowerShell 7(x64)」を起動してください。

PnP.PowerShellをインストールする

3-1.PowerShell 7にPnP.PowerShellをインストールします。PowerShell 7のターミナル画面に以下のコマンドを入力し、[Enter]キーを押下します。

Install-Module PnP.PowerShell -force

特に、インストール進捗画面などは表示されずに、処理が終了します。

3-2.PowerShell 7にPnP.PowerShellがインストールされたことを確認します。PowerShell 7のターミナル画面に以下のコマンドを入力し、[Enter]キーを押下します。

Get-Command -Module PnP.PowerShell

下画面のように、様々なコマンドが表示されることを確認できれば、問題なくインストールされています。

ここから、実際にSharePoint Listsへサンプル用のリストをコマンドで作成します!

3-3.テキストエディタ(メモ帳など)を開き、以下のコードを貼り付けます。

#PnP PowerShellモジュールのインポート
Import-Module -Name PnP.PowerShell

# 接続先サイトURLと認証情報
$siteUrl = "https://{サイトドメイン}/sites/{サイト名}"
$credentials = Get-Credential

# SharePoint Online に接続(MFA認証が無効の場合)
#Connect-PnPOnline -Url $siteUrl -Credentials $credentials

# SharePoint Online に接続(MFA認証が有効の場合)
Connect-PnPOnline -Url $siteUrl -UseWebLogin

#リスト作成
   $Title = "SAMPLEリスト"
   $InternalName="SampleLists"
   New-PnPList  -url  $InternalName -Title $Title -Template GenericList
   
   #リストへ列を追加
   #文字列型を追加
   Add-PnPField -List $InternalName -DisplayName "社員番号" -InternalName "uid" -Type Text  -AddToDefaultView
   # 数値型のフィールドを追加
   Add-PnPField -List $InternalName -DisplayName "価格" -InternalName "Price" -Type Number -AddToDefaultView
   # 日付と時刻型のフィールドを追加
   Add-PnPField -List $InternalName -DisplayName "登録日" -InternalName "RegistrationDate" -Type DateTime -AddToDefaultView
   # 選択肢型のフィールドを追加 (選択肢は "赤", "青", "緑")
   Add-PnPField -List $InternalName -DisplayName "色" -InternalName "Color" -Type Choice -Choices "赤", "青", "緑" -AddToDefaultView
   # ユーザー型のフィールドを追加 (複数選択可)
   Add-PnPField -List $InternalName -DisplayName "担当者" -InternalName "PersonInCharge" -Type User -AddToDefaultView

   #デフォルト列の内容を変更
   Set-PnPField -List $InternalName -Identity "Title" -Values @{"Title"="社員名"; "Indexed"=$true} 
   Set-PnPField -List $InternalName -Identity "uid" -Values @{"Title"="コード"; "Indexed"=$true} 
   Set-PnPField -List $InternalName -Identity "Modified" -Values @{ "Indexed"=$true} 
   
   #リストへの添付ファイルを無効にする
   Set-PnPList -Identity $InternalName -EnableAttachments $false
   
   #リストに新しいビューを作成
   Add-PnPView -List $InternalName -Title "社員表" -Fields "uid","Title" -SetAsDefault -Query "<OrderBy><FieldRef Name='uid' Ascending='true'/></OrderBy>" -Paged
   
   #コンソールにメッセージを表示
   Write-Host $Title を追加

下画面の赤枠箇所は、ご自身で用意したSharePointサイトのURLに変更してください。

【補足】SharePointサイトのURL確認方法
接続先にするSharePointサイトを開き、左メニューの[ホーム]をクリックします。
このときURLバーに表示されているURLがSharePointサイトのURLです。

3-4.[ファイル]>[名前を付けて保存]の順にクリックします。任意の階層へ保存します。

文字コードは[UTF-8(BOM付き)]を指定してください。

3-5.保存したtxtファイルの拡張子を[ps1]に変更します。

3-6.作成したps1ファイルを実行します。PowerShell 7のターミナル画面に以下のコマンドを入力し、[Enter]キーを押下します。
※<スクリプトファイルのパス>には、ps1ファイルの格納先パスに変更してください。

pwsh -ExecutionPolicy RemoteSigned -File <スクリプトファイルのパス>

ps1ファイルを実行すると、[ユーザー]と[パスワード]を入力する旨のメッセージが表示されます。
SharePointサイトへの管理権限をもっているMicrosoftアカウントのIDとパスワードを入力後、[Enter]キーを押下します。

Microsoftのサインイン画面が表示された場合は、SharePointサイトへの管理権限をもっているMicrosoftアカウントの認証をします。

コマンドが実行され、エラーなく処理が完了したことを確認します。

3-7.接続先のSharePointサイトでサンプルリストが作成されたことを確認します。
SharePointサイトの左メニューから[サイト コンテンツ]をクリックします。
画面中央の一覧に「SAMPLEリスト」が表示されていれば、コマンド成功です。

念のため、「SAMPLEリスト」をクリックして、リスト画面に遷移します。
コマンドで作成した列が表示されていることを確認します。

Kazu
Kazu

おつかれさまでした!以上でPowerShellの環境構築がすべて完了しました。
PnP.PowerShellは、SharePoint Listsの作成以外にも、いろいろコマンドがあるので試してみてください。当ブログでは、ITに関わるTipsやガジェットのレビュー、資格受験記などを掲載してます。他にご興味のある記事がありましたら、ご一読いただけますと幸いです!

コメント

タイトルとURLをコピーしました