powershell と .net 使った sharepoint online の管理手法
TRANSCRIPT
黒宮 浩介
2015/02/21
1
黒宮 浩介 (くろみや こうすけ) ※名古屋人です
SPeed LAND 365
https://www.facebook.com/kosuke.kuromiya
名古屋の某SIer に勤務
現在のお仕事
- SharePoint について色々やるエンジニア(導入・開発・保守 etc…)
好きなもの
- 映画、サブカル色々幅広く、SKE48!
2
SharePoint Online(≒クラウドサービス)を、
PowerShell と C# を使ってどのように管理が
できるのかを知っていただく。
3
以下の内容は、2015年9月時点で、私個人が調査および動
作確認をした結果に基づく見解であり、製品およびサービス
の技術的な保証をするものではありません。
私が属する組織・団体とも無関係です。
SharePoint Online(Office365)の機能・サービスは日々
アップデートされるため、以降で説明する仕様などが今後変
更される可能性があります。
また、本内容の操作等を実施された場合に発生したいかなる
問題等に関しても、一切の責任を負いません。
1. SharePoint Online とは
2. SharePoint Online の管理方法
3. 「SharePoint Online Management Shell」とは
4. PowerShell を C# から実行する
5. PowerShell と .Net を組み合わせた開発例
6. まとめ
5
MSの情報共有基盤製品「SharePoint」のSaaS版
◦ ポータルサイト(チームサイト)
お知らせ投稿、掲示板、予定表 etc…
◦ ドキュメント管理(ファイル共有)
◦ コラボレーション
◦ エンタープライズ検索
6
7
8
Web画面:SharePoint管理センター
9
Web画面:Office 365 管理センター
10
PowerShell
◦ 「SharePoint Online Management Shell」
SharePoint Online 専用の PowerShell モジュール
※参考サイト【SharePoint Online 管理シェルの概要】
http://office.microsoft.com/ja-jp/sharepoint-help/HA102915057.aspx
C:¥Windows¥System32¥WindowsPowerShell¥v1.0¥powershell.exe -NoExit -Command "Import-
Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking;“
コマンドラインからSharePoint Online を管理できる
インストーラーをDLして、インストールするだけで使える
SharePoint Online グローバル管理者のユーザー権限で接続する
11
テナント内のサイトコレクション一覧を取得するhttps://technet.microsoft.com/ja-jp/library/fp161380.aspx
Connect-SPOService -Url “https://xxx-admin.sharepoint.com” -
Credential “[email protected]”
Get-SPOSite
Disconnect-SPOService
※出力結果をCSVファイルに出力する
Get-SPOSite -Detailed | Export-Csv C:¥Dev¥Get-SPOSite_Detailed.csv
12
13
14
15
自社テナント外のユーザー(メールアドレス)を
SharePoint Onlineのサイトに招待(登録)して、
サイトへアクセスできるようにする機能
◦ Online のみの機能(追加料金 不要)
◦ 登録可能ユーザー数= 無制限!
◦ 標準的な操作は通常ユーザーとほぼ同程度できる
◦ 使用例:
プロジェクト用のポータルサイトにそこに他社のユーザーを「外部
ユーザー」として招待して、情報共有やファイル共有ができる
1. 登録できるメールアドレスがフリーアカウント◦ 誰でも自由に作れるユーザーアカウントが(SaaSとはいえ)“社内”サ
イトにアクセスすることになる。
◦ 漏えいリスク、機密保持をどう確保するか
2. 外部ユーザーの「利用状況」管理する機能が不十分◦ 管理者的には
「どんなユーザー (信用)」が、 「どれだけ(人数・規模)」で
「どこのサイト(情報種類)」 にアクセスしているのか、
を把握したい
◦ 管理センターでは「個々のサイトコレクションごと」の確認画面だけ
=「自社テナント内の全ての外部ユーザー」を一括確認する画面が無い。
テナント内の外部ユーザーを取得する。https://technet.microsoft.com/ja-jp/library/jj730438.aspx
Get-SPOExternalUser [-Position X] [-PageSize XX] [-SiteUrl]
◦ 引数
-Position:開始番号(何番目の外部ユーザーを取得するか)
-PageSize:何人分の外部ユーザーを取得するか
[注意] 指定無し=最初(0番目)の一人だけ取得
22
23
実運用には課題が…
◦ 一度に取得できる最大ユーザー数が 50 …
◦ MSDN等には書いてない(実行してみて初めて…orz)
24
「テナントの全ての外部ユーザーを取得する」には
Get-SPOExternalUser -Position 0 -PageSize 50
↓ if (50人取得してたら) ⇒ 50番目の外部ユーザーから50人分取る
Get-SPOExternalUser -Position 50 -PageSize 50
↓ if (50人取得してたら) ⇒ 100番目の外部ユーザーから50人分取る
Get-SPOExternalUser -Position 100 –PageSize 50
↓ if (50人取得してたら) ⇒ 150番目の外部ユーザーから50人分取る
…という条件判断(処理)が必要?!…(汗)
25
PS ISEでスクリプトを書いて .ps1 ファイルにする
◦ インフラ周り(ADやExchange) の技術者の方が得意?
(個人的に)元々がプログラマーなんで、C#で書け
れば手っ取り早いんだけどなぁ…
26
PowerShell クラス
◦ 「Windows Management Framework」配下の
System.Management.Automation.DLL を参照追加する(C:¥Program Files (x86)¥Reference Assemblies¥Microsoft¥WindowsPowerShell¥3.0)
◦ [注意]
ビルドの「構成マネージャー」でプラットフォームを、デフォルトの
「Any CPU」から「64bit」に変更する。
28
29
30
31
32
33
+ 50
34
今回のプログラムはこの公開コードを参考にしました
◦ “Run SharePoint Online Management PowerShell command
programmatically”https://code.msdn.microsoft.com/office/Run-SharePoint-Online-8d1d0a3b
35
37
1. PowerShell & C# で管理用データを取得する
2. SPO のリストに取得したデータを保存する
◦ 保存用のサイトとリストは事前に作成しておく
◦ CSOM* によるSPOデータへのアクセス
*クライアントサイドオブジェクトモデル
管理者権限の無いユーザーにデーターを見せられる
◦ サイトコレクション管理者にサイトの利用状況等を見せられる
※参考サイト
【SharePoint 2013 での適切な API セットの選択】
https://msdn.microsoft.com/ja-jp/library/jj164060(v=office.15).aspx
【SharePoint 2013 .NET Server, CSOM, … index】
https://msdn.microsoft.com/en-us/library/office/dn268594.aspx
PowerShell や プログラムによる管理の利点
◦ 管理処理(業務)をバッチ(ジョブ)で自動化できる
人力による管理の削減 ←ある程度の大規模向け?
注意点
◦ NWの状況などの問題でテナントに接続できないケースが
ままあるので、エラー時処理などの考慮は必要。
◦ コマンドの仕様がいつの間にか変わる可能性あり?
38
【SharePoint Online 管理シェルの概要】
http://office.microsoft.com/ja-jp/sharepoint-help/HA102915057.aspx
【SharePoint Online PowerShell コマンドレット の インデックス】
http://technet.microsoft.com/ja-jp/library/fp161364(v=office.15).aspx
【PowerShell Class System.Management.Automation】https://msdn.microsoft.com/en-us/library/system.management.automation.powershell(v=vs.85).aspx
【PowerShell を C# から実行する】(MVP田中さんのブログ)
http://tech.tanaka733.net/entry/2013/12/10/powershell-from-csharp
【Windows PowerShell を使用して Office 365 を管理する利点】https://technet.microsoft.com/ja-jp/library/dn567998.aspx
【Office 365 の最新環境で PowerShell を使うための知識】
http://community.office365.com/ja-jp/b/office_365_community_blog/archive/2014/05/09/using-
powershell-in-the-new-office-365.aspx
39
ご清聴ありがとうございました
40