More Related Content
Similar to “SharePoint Online Management Shell” をプログラムから実行する (20)
“SharePoint Online Management Shell” をプログラムから実行する
- 2. 黒宮 浩介 (くろみや こうすけ) ※名古屋人です
SPeed LAND 365
https://www.facebook.com/kosuke.kuromiya
名古屋の某SIer に勤務
現在のお仕事
- SharePoint について色々やるエンジニア(導入・開発・保守 etc…)
好きなもの
- 映画、サブカル系幅広く、SKE48!
2
- 4. SharePoint Online 用 PowerShell モジュールの
「SharePoint Online Management Shell」を
.Net のプログラム (C#) で実行する方法を知って
いただく
4
【なぜ “プログラムで実行する” のか】
標準の管理画面やPowerShell単体だと、実運用時では
機能不足となるケースがあるから
- 5. 1. 「SharePoint Online Management Shell」とは
2. PowerShell を C# から実行する
3. PowerShell と .Net を組み合わせた開発例
4. まとめ
5
- 7. SharePoint Online 専用の PowerShell モジュール
◦ コマンドラインからSharePoint Online を管理
◦ インストーラーをDLして、インストールするだけ
◦ SharePoint Online グローバル管理者のID・Passで接続
※【SharePoint Online Management Shell の概要】
http://office.microsoft.com/ja-jp/sharepoint-help/HA102915057.aspx
7
- 10. /* SPOテナントに接続 */
Connect-SPOService -Url “https://xxx-admin.sharepoint.com” -
Credential “UserID@xxx.onmicrosoft.com”
/* サイトコレクションの一覧詳細情報を取得 */
> Get-SPOSite -Detailed | Export-Csv C:¥Dev¥Get-SPOSite_Detailed.csv
/* SPOテナントから切断 */
> Disconnect-SPOService
10
SharePoint管理センター」のURL
出力結果をCSVファイルに出力
- 14. “Windows PowerShell で Office 365 を管理する6つの理由”
http://technet.microsoft.com/ja-jp/library/dn568034.aspx
1. 管理センターで取得できない「非表示」の情報を確認できる
2. Windows PowerShell でのみ構成可能な Office 365 機能がある
3. 一括操作の実行では Windows PowerShell が卓越している
4. Windows PowerShell はデータのフィルター処理に優れている
5. Windows PowerShell を使用するとデータを簡単に印刷・保存できる
6. Windows PowerShell を使用すると「製品間」管理が可能になる
14
詳細 複雑 取り回し
- 18. Get-SPOExternalUser [-SiteUrl] [-Position X] [-PageSize XX]
◦ 引数
- SiteUrl: 対象のサイトコレクション
指定なし=全サイトコレクションを対象
-Position: 開始番号(何番目の外部ユーザーを取得するか)
-PageSize: いくつの外部ユーザーを取得するか
指定しない=最初(0番目)の一人だけ取得 [注意]
https://technet.microsoft.com/ja-jp/library/jj730438.aspx
18
- 22. 「テナントの全ての外部ユーザーを取得する」には
⇒ まず 0番目の外部ユーザーから50人分取る
Get-SPOExternalUser -Position 0 -PageSize 50
↓ if (50人取得してたら) ⇒ 0番目の外部ユーザーから50人分取る
Get-SPOExternalUser -Position 50 -PageSize 50
↓ if (50人取得してたら) ⇒ 50番目の外部ユーザーから50人分取る
Get-SPOExternalUser -Position 100 –PageSize 50
↓ if (50人取得してたら) ⇒ 100番目の外部ユーザーから50人分取る
→50人未満だったら「全部取得できた」と判断して終了
22
…という条件判断(=処理)が必要
- 26. PowerShell クラス
◦ 「Windows Management Framework」配下の
System.Management.Automation.DLL を参照追加する
(C:¥Program Files (x86)¥Reference Assemblies¥Microsoft¥WindowsPowerShell¥3.0)
[注意]
ビルドの「構成マネージャー」でプラットフォームを、デフォルトの
「Any CPU」から「64bit」に変更する。
26
- 33. 今回のプログラムはこの公開コードを参考にしました
◦ “Run SharePoint Online Management PowerShell command
programmatically”
https://code.msdn.microsoft.com/office/Run-SharePoint-Online-8d1d0a3b
33
- 35. 35
1. PowerShell & C# で管理データを取得
2. SPO のリストに取得したデータを保存
◦ 保存用のサイトとカスタムリストは事前に作成
◦ SPOリストへのアクセスはCSOM*を利用
*クライアントサイドオブジェクトモデル
管理者権限の無いユーザーにデータを見せられる
◦ サイトコレクション管理者にサイトの利用状況等を見せられる
- 37. “サイトのアクセス権限から削除した外部ユーザーが
取得できてしまう” 問題
◦ 「現に使用中の外部ユーザーを取得」ではない
「現に現在使用中の外部ユーザー」を取得する方法
1. 外部ユーザー取得コマンドで必ずサイトコレクション指定
ダメな可能性大(削除した外部ユーザーが取得できてしまうっぽい)
超困ってます…(滝汗) だれか助けてください…(マジで)
2. 外部ユーザーの削除をコマンドで完全削除
Remove-SPOExternalUser ※ただし内部UniqueIDを指定が必要
⇒現実的には難しい…
37
- 39. PowerShell をプログラムで実行する利点
◦ 管理処理(業務)をバッチジョブ等で自動化できる
人力による管理の削減 ←ある程度以上の大規模向け?
◦ さらにGUIツール化もできる(WinフォームやWPF)
技術スキルが無い人でも高度な管理が可能
注意点
◦ 管理データ&コマンドの仕様についての情報が少ない…
◦ 〃の仕様がいつの間にか変わる可能性がある?
39
- 40. 【SharePoint Online 管理シェルの概要】
http://office.microsoft.com/ja-jp/sharepoint-help/HA102915057.aspx
【PowerShell Class System.Management.Automation】
https://msdn.microsoft.com/en-us/library/system.management.automation.powershell(v=vs.85).aspx
【PowerShell を C# から実行する】
http://tech.tanaka733.net/entry/2013/12/10/powershell-from-csharp
【Run SharePoint Online Management PowerShell command
programmatically】
https://code.msdn.microsoft.com/office/Run-SharePoint-Online-8d1d0a3b
【Windows PowerShell で Office 365 を管理する 6 つの理由
http://technet.microsoft.com/ja-jp/library/dn568034.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 40