今回はPowerShellからSharePoint Onlineを操作するための下準備について説明してみます。
PowerShellによる操作
まずSharePoint OnlineをPowerShellで操作するには2つの方法が用意されています。
ひとつがSharePoint Online 管理シェルを用いた方法。そしてもうひとつが今回紹介するSharePoint Online Client Component SDKを用いる方法です。
SharePoint Online 管理シェル
こちらは事前に用意された管理タスクなどを実行する際によく用いられる方法です。利点としては少ない工数で効率的に作業を行えるという点が挙げられます。しかし、実行するにはテナントに対するグローバル管理者の権限が必要となってしまい、実運用上で気軽に使える手段ではありません。
そこで次項の方法がよく用いられます。
SharePoint Online Client Component SDK
こちらは実運用でよく用いられる手段で、サイトコレクションの管理者や一般ユーザーでも実行することができます。※権限によって可能な操作は異なる
これはCSOMとか呼ばれるクライアントサイドの処理によるアクセスになります。
今回はこちらの手段を投じる際に必要となる環境の準備について説明していきます。
必要な環境
作業するにあたって以下2つが必要となります。
- Windows PowerShell
- SharePoint Online Client Component SDK
最近のPCだとPowerShellがインストールされている場合が殆どだとは思いますが、入っていない場合は以下のURLを参考にインストールしておきましょう。
SharePoint Online Client Component SDKのインストール
まずは以下サイトからインストーラーをダウンロードし、インストールします。特に設定変更などはないのでウィザード通りに進めていきましょう。
PowerShellからSPOを操作する際、このインストールしたアセンブリを読み込んで使用することになります。プログラム先頭で以下のようにして読み込みましょう。
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") | Out-Null [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") | Out-Null
|Out-Null は余計な出力しないためのおまじないみたいなもんです。たぶん。
動作確認
ではサンプルコードを実行して動作確認をしてみませう。
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") | Out-Null [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") | Out-Null #接続情報等 $SiteUrl = "https://tenant.sharepoint.com/testsite" $Account = "adminAccount@tenant.onmicrosoft.com" $Password = Read-Host -Prompt "Enter Password." -AsSecureString # Credential作成 $Credential = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Account, $Password) # Context作成 $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl) $Context.Credentials = $Credential $listName = "テストリスト" # Listオブジェクト作成 $objList = $Context.Web.Lists.GetByTitle($listName) $Context.Load($objList) $Context.ExecuteQuery() Write-Host "list name:" $objList.Title # 後始末 $Context.Dispose()
実行すると最初にパスワードを聞かれ、入力後にエンターを押すとリスト名を取得しています。
リスト名でリストを特定して名前を取得するというよく分からない事をしているのはご愛嬌。。とりあえずこれでSharePointをPowershellでいじくり倒すための準備は完了です。
今後リストを作ったりいじったりとか色々とやっていく予定です(∩´∀`)∩
コメント