40
黒宮 浩介 2015/02/21 1

PowerShell と .Net 使った SharePoint Online の管理手法

Embed Size (px)

Citation preview

Page 1: PowerShell と .Net 使った SharePoint Online の管理手法

黒宮 浩介

2015/02/21

1

Page 2: PowerShell と .Net 使った SharePoint Online の管理手法

黒宮 浩介 (くろみや こうすけ) ※名古屋人です

SPeed LAND 365

https://www.facebook.com/kosuke.kuromiya

名古屋の某SIer に勤務

現在のお仕事

- SharePoint について色々やるエンジニア(導入・開発・保守 etc…)

好きなもの

- 映画、サブカル色々幅広く、SKE48!

2

Page 3: PowerShell と .Net 使った SharePoint Online の管理手法

SharePoint Online(≒クラウドサービス)を、

PowerShell と C# を使ってどのように管理が

できるのかを知っていただく。

3

Page 4: PowerShell と .Net 使った SharePoint Online の管理手法

以下の内容は、2015年9月時点で、私個人が調査および動

作確認をした結果に基づく見解であり、製品およびサービス

の技術的な保証をするものではありません。

私が属する組織・団体とも無関係です。

SharePoint Online(Office365)の機能・サービスは日々

アップデートされるため、以降で説明する仕様などが今後変

更される可能性があります。

また、本内容の操作等を実施された場合に発生したいかなる

問題等に関しても、一切の責任を負いません。

Page 5: PowerShell と .Net 使った SharePoint Online の管理手法

1. SharePoint Online とは

2. SharePoint Online の管理方法

3. 「SharePoint Online Management Shell」とは

4. PowerShell を C# から実行する

5. PowerShell と .Net を組み合わせた開発例

6. まとめ

5

Page 6: PowerShell と .Net 使った SharePoint Online の管理手法

MSの情報共有基盤製品「SharePoint」のSaaS版

◦ ポータルサイト(チームサイト)

お知らせ投稿、掲示板、予定表 etc…

◦ ドキュメント管理(ファイル共有)

◦ コラボレーション

◦ エンタープライズ検索

6

Page 7: PowerShell と .Net 使った SharePoint Online の管理手法

7

Page 8: PowerShell と .Net 使った SharePoint Online の管理手法

8

Page 9: PowerShell と .Net 使った SharePoint Online の管理手法

Web画面:SharePoint管理センター

9

Page 10: PowerShell と .Net 使った SharePoint Online の管理手法

Web画面:Office 365 管理センター

10

Page 11: PowerShell と .Net 使った SharePoint Online の管理手法

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

Page 12: PowerShell と .Net 使った SharePoint Online の管理手法

テナント内のサイトコレクション一覧を取得する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

Page 13: PowerShell と .Net 使った SharePoint Online の管理手法

13

Page 14: PowerShell と .Net 使った SharePoint Online の管理手法

14

Page 15: PowerShell と .Net 使った SharePoint Online の管理手法

15

Page 16: PowerShell と .Net 使った SharePoint Online の管理手法
Page 17: PowerShell と .Net 使った SharePoint Online の管理手法

自社テナント外のユーザー(メールアドレス)を

SharePoint Onlineのサイトに招待(登録)して、

サイトへアクセスできるようにする機能

◦ Online のみの機能(追加料金 不要)

◦ 登録可能ユーザー数= 無制限!

◦ 標準的な操作は通常ユーザーとほぼ同程度できる

◦ 使用例:

プロジェクト用のポータルサイトにそこに他社のユーザーを「外部

ユーザー」として招待して、情報共有やファイル共有ができる

Page 18: PowerShell と .Net 使った SharePoint Online の管理手法
Page 19: PowerShell と .Net 使った SharePoint Online の管理手法
Page 20: PowerShell と .Net 使った SharePoint Online の管理手法

1. 登録できるメールアドレスがフリーアカウント◦ 誰でも自由に作れるユーザーアカウントが(SaaSとはいえ)“社内”サ

イトにアクセスすることになる。

◦ 漏えいリスク、機密保持をどう確保するか

2. 外部ユーザーの「利用状況」管理する機能が不十分◦ 管理者的には

「どんなユーザー (信用)」が、 「どれだけ(人数・規模)」で

「どこのサイト(情報種類)」 にアクセスしているのか、

を把握したい

◦ 管理センターでは「個々のサイトコレクションごと」の確認画面だけ

=「自社テナント内の全ての外部ユーザー」を一括確認する画面が無い。

Page 21: PowerShell と .Net 使った SharePoint Online の管理手法
Page 22: PowerShell と .Net 使った SharePoint Online の管理手法

テナント内の外部ユーザーを取得する。https://technet.microsoft.com/ja-jp/library/jj730438.aspx

Get-SPOExternalUser [-Position X] [-PageSize XX] [-SiteUrl]

◦ 引数

-Position:開始番号(何番目の外部ユーザーを取得するか)

-PageSize:何人分の外部ユーザーを取得するか

[注意] 指定無し=最初(0番目)の一人だけ取得

22

Page 23: PowerShell と .Net 使った SharePoint Online の管理手法

23

Page 24: PowerShell と .Net 使った SharePoint Online の管理手法

実運用には課題が…

◦ 一度に取得できる最大ユーザー数が 50 …

◦ MSDN等には書いてない(実行してみて初めて…orz)

24

Page 25: PowerShell と .Net 使った SharePoint Online の管理手法

「テナントの全ての外部ユーザーを取得する」には

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

Page 26: PowerShell と .Net 使った SharePoint Online の管理手法

PS ISEでスクリプトを書いて .ps1 ファイルにする

◦ インフラ周り(ADやExchange) の技術者の方が得意?

(個人的に)元々がプログラマーなんで、C#で書け

れば手っ取り早いんだけどなぁ…

26

Page 27: PowerShell と .Net 使った SharePoint Online の管理手法
Page 28: PowerShell と .Net 使った SharePoint Online の管理手法

PowerShell クラス

◦ 「Windows Management Framework」配下の

System.Management.Automation.DLL を参照追加する(C:¥Program Files (x86)¥Reference Assemblies¥Microsoft¥WindowsPowerShell¥3.0)

◦ [注意]

ビルドの「構成マネージャー」でプラットフォームを、デフォルトの

「Any CPU」から「64bit」に変更する。

28

Page 29: PowerShell と .Net 使った SharePoint Online の管理手法

29

Page 30: PowerShell と .Net 使った SharePoint Online の管理手法

30

Page 31: PowerShell と .Net 使った SharePoint Online の管理手法

31

Page 32: PowerShell と .Net 使った SharePoint Online の管理手法

32

Page 33: PowerShell と .Net 使った SharePoint Online の管理手法

33

+ 50

Page 34: PowerShell と .Net 使った SharePoint Online の管理手法

34

Page 35: PowerShell と .Net 使った SharePoint Online の管理手法

今回のプログラムはこの公開コードを参考にしました

◦ “Run SharePoint Online Management PowerShell command

programmatically”https://code.msdn.microsoft.com/office/Run-SharePoint-Online-8d1d0a3b

35

Page 36: PowerShell と .Net 使った SharePoint Online の管理手法
Page 37: PowerShell と .Net 使った SharePoint Online の管理手法

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

Page 38: PowerShell と .Net 使った SharePoint Online の管理手法

PowerShell や プログラムによる管理の利点

◦ 管理処理(業務)をバッチ(ジョブ)で自動化できる

人力による管理の削減 ←ある程度の大規模向け?

注意点

◦ NWの状況などの問題でテナントに接続できないケースが

ままあるので、エラー時処理などの考慮は必要。

◦ コマンドの仕様がいつの間にか変わる可能性あり?

38

Page 39: PowerShell と .Net 使った SharePoint Online の管理手法

【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

Page 40: PowerShell と .Net 使った SharePoint Online の管理手法

ご清聴ありがとうございました

40