SlideShare a Scribd company logo
1 of 41
Download to read offline
黒宮 浩介
2015/03/14
1
 黒宮 浩介 (くろみや こうすけ) ※名古屋人です
SPeed LAND 365
https://www.facebook.com/kosuke.kuromiya
 名古屋の某SIer に勤務
 現在のお仕事
- SharePoint について色々やるエンジニア(導入・開発・保守 etc…)
 好きなもの
- 映画、サブカル系幅広く、SKE48!
2
本内容は、2015年3月時点で、私個人が調査および動作確認を
した結果に基づく見解であり、製品およびサービスの技術的な
保証をするものではありません。SharePoint Online
(Office365)の仕様などは今後変更される可能性があります。
また、私の属する組織等とは一切関係ありません。
本内容の操作等を実施された場合に発生したいかなる問題等に
関しても、一切の責任を負いません。
SharePoint Online 用 PowerShell モジュールの
「SharePoint Online Management Shell」を
.Net のプログラム (C#) で実行する方法を知って
いただく
4
【なぜ “プログラムで実行する” のか】
標準の管理画面やPowerShell単体だと、実運用時では
機能不足となるケースがあるから
1. 「SharePoint Online Management Shell」とは
2. PowerShell を C# から実行する
3. PowerShell と .Net を組み合わせた開発例
4. まとめ
5
 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
8
9
/* 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ファイルに出力
11
12
13
 “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
詳細 複雑 取り回し
 「外部ユーザー」の管理機能が不十分
◦ サイトコレクションひとつずつ の確認画面しかない
=「テナント内の全ての外部ユーザー」を一括確認する画面が無い
◦ 管理者の立場としては…
 誰が(どんなユーザ)
 どれだけ(人数・規模)
 どこに(サイト・コンテンツ種類) などを把握したい
 「外部ユーザーの管理」: [外部共有] > [サイト]
16
Get-SPOExternalUser [-SiteUrl] [-Position X] [-PageSize XX]
◦ 引数
 - SiteUrl: 対象のサイトコレクション
 指定なし=全サイトコレクションを対象
 -Position: 開始番号(何番目の外部ユーザーを取得するか)
 -PageSize: いくつの外部ユーザーを取得するか
 指定しない=最初(0番目)の一人だけ取得 [注意]
 https://technet.microsoft.com/ja-jp/library/jj730438.aspx
18
19
“-PageSize” を指定しない
⇒最初(0番目)の一人だけ取得
20
“-PageSize”を指定する ⇒その分が取得できる
 ただ問題が…
◦ 一度に取得できる最大ユーザー数が 50 …
◦ MSDN等には書いてない(実行してみて初めて知る...orz
21
 「テナントの全ての外部ユーザーを取得する」には
⇒ まず 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
…という条件判断(=処理)が必要
 “ISEでスクリプトを書いて .ps1ファイル” が王道?
◦ インフラ技術者(ADやExchange)が得意?
 身近に Shell が得意な人がいなかった(自分も…)
◦ プログラマーはいるので、C#で書ければいい
23
 .Net Framework の PowerShell クラスを利用
◦ System.Management.Automation 名前空間
25
 PowerShell クラス
◦ 「Windows Management Framework」配下の
System.Management.Automation.DLL を参照追加する
(C:¥Program Files (x86)¥Reference Assemblies¥Microsoft¥WindowsPowerShell¥3.0)
[注意]
ビルドの「構成マネージャー」でプラットフォームを、デフォルトの
「Any CPU」から「64bit」に変更する。
26
27
System.Management.Automation.DLL を参照設定に追加
(C:¥Program Files (x86)¥Reference Assemblies¥Microsoft
¥WindowsPowerShell¥3.0)
28
ImportPSModuleメソッドで SPO M Shell の
モジュールをインポート
参照設定を追加
29
C:¥Windows¥System32¥WindowsPowerShell¥v1.0¥powershell.exe -NoExit
-Command “Import-Module Microsoft.Online.SharePoint.PowerShell
-DisableNameChecking;“
⇒ プログラム実体は Window PowerShell
起動時に SPO M Shell のモジュールをインポート
(先ほどのプログラムでもこれと同じことを実装)
30
SPOテナントに接続するコマンド
“Connect-SPOService” の文字列を作る
Invokeメソッド(引数=生成した文字列) で
コマンドを実行
31
+ 50
“50人取得してたら、さらに次の(+50番
目から)50人分取る” の条件判断
外部ユーザー取得コマンド
“Get-SPOExternalUser” の
文字列を作って、実行
32
取得した外部ユーザーをCSVに出力
 今回のプログラムはこの公開コードを参考にしました
◦ “Run SharePoint Online Management PowerShell command
programmatically”
https://code.msdn.microsoft.com/office/Run-SharePoint-Online-8d1d0a3b
33
35
1. PowerShell & C# で管理データを取得
2. SPO のリストに取得したデータを保存
◦ 保存用のサイトとカスタムリストは事前に作成
◦ SPOリストへのアクセスはCSOM*を利用
*クライアントサイドオブジェクトモデル
 管理者権限の無いユーザーにデータを見せられる
◦ サイトコレクション管理者にサイトの利用状況等を見せられる
36
SharePoint
Online
クライアント
① SPOM Shell (by C#) でアクセス
② 管理データを取得
③ .Net CSOM* (by C#) で書き込み チームサイト
④ SPO管理者以外のユーザーが閲覧
管理センター
ブラウザ
EXE, BAT
Winタスク
カスタムリスト
* Client-Side Object Model
 “サイトのアクセス権限から削除した外部ユーザーが
取得できてしまう” 問題
◦ 「現に使用中の外部ユーザーを取得」ではない
 「現に現在使用中の外部ユーザー」を取得する方法
1. 外部ユーザー取得コマンドで必ずサイトコレクション指定
 ダメな可能性大(削除した外部ユーザーが取得できてしまうっぽい)
 超困ってます…(滝汗) だれか助けてください…(マジで)
2. 外部ユーザーの削除をコマンドで完全削除
 Remove-SPOExternalUser ※ただし内部UniqueIDを指定が必要
⇒現実的には難しい…
37
38
http://sharepointmaniacs.com/archives/5728
 PowerShell をプログラムで実行する利点
◦ 管理処理(業務)をバッチジョブ等で自動化できる
 人力による管理の削減 ←ある程度以上の大規模向け?
◦ さらにGUIツール化もできる(WinフォームやWPF)
 技術スキルが無い人でも高度な管理が可能
 注意点
◦ 管理データ&コマンドの仕様についての情報が少ない…
◦ 〃の仕様がいつの間にか変わる可能性がある?
39
【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
ご清聴ありがとうございました
41

More Related Content

What's hot

20170311 腕時計からSharePointへ / from watch to sharepoint
20170311 腕時計からSharePointへ / from watch to sharepoint20170311 腕時計からSharePointへ / from watch to sharepoint
20170311 腕時計からSharePointへ / from watch to sharepoint
ta2c
 

What's hot (20)

Bot × Office 365 〜 Microsoft Bot Framework と Microsoft Graph API を使った業務システムの新...
Bot × Office 365 〜 Microsoft Bot Framework と Microsoft Graph API を使った業務システムの新...Bot × Office 365 〜 Microsoft Bot Framework と Microsoft Graph API を使った業務システムの新...
Bot × Office 365 〜 Microsoft Bot Framework と Microsoft Graph API を使った業務システムの新...
 
20150221 365video 色々あげてみた
20150221 365video 色々あげてみた20150221 365video 色々あげてみた
20150221 365video 色々あげてみた
 
SharePoint Online の 「モダンUI」の利用が進まない
SharePoint Online の 「モダンUI」の利用が進まないSharePoint Online の 「モダンUI」の利用が進まない
SharePoint Online の 「モダンUI」の利用が進まない
 
office 365 video について 2015/02/14
office 365 video について 2015/02/14office 365 video について 2015/02/14
office 365 video について 2015/02/14
 
Microsoft Stream について
Microsoft Stream についてMicrosoft Stream について
Microsoft Stream について
 
Outlook アドイン開発入門
Outlook アドイン開発入門Outlook アドイン開発入門
Outlook アドイン開発入門
 
SharePoint Online で、ポータル実践アイデア
SharePoint Online で、ポータル実践アイデアSharePoint Online で、ポータル実践アイデア
SharePoint Online で、ポータル実践アイデア
 
SharePoint Framework をはじめよう #spfx
SharePoint Framework をはじめよう #spfxSharePoint Framework をはじめよう #spfx
SharePoint Framework をはじめよう #spfx
 
より効果的に業務改善するためのOffice 365活用術
より効果的に業務改善するためのOffice 365活用術より効果的に業務改善するためのOffice 365活用術
より効果的に業務改善するためのOffice 365活用術
 
Office 365 グループの SharePoint サイト研究報告
Office 365 グループの SharePoint サイト研究報告Office 365 グループの SharePoint サイト研究報告
Office 365 グループの SharePoint サイト研究報告
 
ハイブリッドワークプレイスってなんだ? ずっと Microsoft 365 を見てきた 4 人が振り返る Microsoft Ignite 2021
ハイブリッドワークプレイスってなんだ? ずっと Microsoft 365 を見てきた 4 人が振り返る Microsoft Ignite 2021ハイブリッドワークプレイスってなんだ? ずっと Microsoft 365 を見てきた 4 人が振り返る Microsoft Ignite 2021
ハイブリッドワークプレイスってなんだ? ずっと Microsoft 365 を見てきた 4 人が振り返る Microsoft Ignite 2021
 
20170311 腕時計からSharePointへ / from watch to sharepoint
20170311 腕時計からSharePointへ / from watch to sharepoint20170311 腕時計からSharePointへ / from watch to sharepoint
20170311 腕時計からSharePointへ / from watch to sharepoint
 
SharePoint 2013 流リスト ビュー カスタマイズ
SharePoint 2013 流リスト ビュー カスタマイズSharePoint 2013 流リスト ビュー カスタマイズ
SharePoint 2013 流リスト ビュー カスタマイズ
 
Office 365 とか Microsoft Teams とか
Office 365 とか Microsoft Teams とかOffice 365 とか Microsoft Teams とか
Office 365 とか Microsoft Teams とか
 
NPO に Office365 Nonprofit 版導入してみました。
NPO に Office365 Nonprofit 版導入してみました。NPO に Office365 Nonprofit 版導入してみました。
NPO に Office365 Nonprofit 版導入してみました。
 
365 に Video がやって来る ヤァ!ヤァ!ヤァ!
365 に Video がやって来る ヤァ!ヤァ!ヤァ!365 に Video がやって来る ヤァ!ヤァ!ヤァ!
365 に Video がやって来る ヤァ!ヤァ!ヤァ!
 
SharePoint Online を JavaScript でイジる。
SharePoint Online を JavaScript でイジる。SharePoint Online を JavaScript でイジる。
SharePoint Online を JavaScript でイジる。
 
Re tohoku2016 知らないと損をするマイクロソフトの基幹システムerpcrmとoffice365-microsoft-azurepower-bi...
Re tohoku2016 知らないと損をするマイクロソフトの基幹システムerpcrmとoffice365-microsoft-azurepower-bi...Re tohoku2016 知らないと損をするマイクロソフトの基幹システムerpcrmとoffice365-microsoft-azurepower-bi...
Re tohoku2016 知らないと損をするマイクロソフトの基幹システムerpcrmとoffice365-microsoft-azurepower-bi...
 
SharePoint Online Communication Sites お手軽サイト作成
SharePoint Online Communication Sites お手軽サイト作成SharePoint Online Communication Sites お手軽サイト作成
SharePoint Online Communication Sites お手軽サイト作成
 
SharePoint 2013 アーキテクチャの変更点と新機能
SharePoint 2013 アーキテクチャの変更点と新機能SharePoint 2013 アーキテクチャの変更点と新機能
SharePoint 2013 アーキテクチャの変更点と新機能
 

Viewers also liked

Viewers also liked (20)

Office 365 勉強会「いまさらきけない? SharePoint の基礎のキソ」
 Office 365 勉強会「いまさらきけない? SharePoint の基礎のキソ」 Office 365 勉強会「いまさらきけない? SharePoint の基礎のキソ」
Office 365 勉強会「いまさらきけない? SharePoint の基礎のキソ」
 
IoT、貯めるだけではもったいない
IoT、貯めるだけではもったいないIoT、貯めるだけではもったいない
IoT、貯めるだけではもったいない
 
.NET Micro Framework で IoT
.NET Micro Framework で IoT.NET Micro Framework で IoT
.NET Micro Framework で IoT
 
クラウド時代の SharePoint 開発に備えよう
クラウド時代の SharePoint 開発に備えようクラウド時代の SharePoint 開発に備えよう
クラウド時代の SharePoint 開発に備えよう
 
Sharegate Migration のご紹介
Sharegate Migration のご紹介Sharegate Migration のご紹介
Sharegate Migration のご紹介
 
Office 365 のセキュリティ対策(情報管理) 8つのポイント
Office 365 のセキュリティ対策(情報管理) 8つのポイントOffice 365 のセキュリティ対策(情報管理) 8つのポイント
Office 365 のセキュリティ対策(情報管理) 8つのポイント
 
いまもういちど SharePoint とエンタープライズ・ソーシャルを考える(2014年5月31日 JSPUG勉強会
いまもういちど SharePoint とエンタープライズ・ソーシャルを考える(2014年5月31日 JSPUG勉強会いまもういちど SharePoint とエンタープライズ・ソーシャルを考える(2014年5月31日 JSPUG勉強会
いまもういちど SharePoint とエンタープライズ・ソーシャルを考える(2014年5月31日 JSPUG勉強会
 
SharePoint 2013/Office365の「ソーシャル」でできること。SharePointは社内Facebookになれるのか?
SharePoint 2013/Office365の「ソーシャル」でできること。SharePointは社内Facebookになれるのか?SharePoint 2013/Office365の「ソーシャル」でできること。SharePointは社内Facebookになれるのか?
SharePoint 2013/Office365の「ソーシャル」でできること。SharePointは社内Facebookになれるのか?
 
新チームサイトの「ソーシャル」でできること チームサイトは社内Facebookになれるのか?
新チームサイトの「ソーシャル」でできること チームサイトは社内Facebookになれるのか?新チームサイトの「ソーシャル」でできること チームサイトは社内Facebookになれるのか?
新チームサイトの「ソーシャル」でできること チームサイトは社内Facebookになれるのか?
 
SharePoint 開発入門
SharePoint 開発入門SharePoint 開発入門
SharePoint 開発入門
 
PowerApps をざっくりさわってみた
PowerApps をざっくりさわってみたPowerApps をざっくりさわってみた
PowerApps をざっくりさわってみた
 
Microsoft Flow は SharePoint Designer ワークフローの代わりになり得るか!?
Microsoft Flow は SharePoint Designer ワークフローの代わりになり得るか!?Microsoft Flow は SharePoint Designer ワークフローの代わりになり得るか!?
Microsoft Flow は SharePoint Designer ワークフローの代わりになり得るか!?
 
SharePoint Online 「アクセス権」を理解する
SharePoint Online 「アクセス権」を理解するSharePoint Online 「アクセス権」を理解する
SharePoint Online 「アクセス権」を理解する
 
PowerApps による初めてのアプリ開発
PowerApps による初めてのアプリ開発PowerApps による初めてのアプリ開発
PowerApps による初めてのアプリ開発
 
新しい SharePoint アプリを試してみよう
新しい SharePoint アプリを試してみよう新しい SharePoint アプリを試してみよう
新しい SharePoint アプリを試してみよう
 
Office 365 のチームサイトを 美味しく つかう 10 の方法
Office 365 のチームサイトを 美味しく つかう 10 の方法Office 365 のチームサイトを 美味しく つかう 10 の方法
Office 365 のチームサイトを 美味しく つかう 10 の方法
 
SharePoint Server 2016 ハイブリッド検索やってみた
SharePoint Server 2016 ハイブリッド検索やってみたSharePoint Server 2016 ハイブリッド検索やってみた
SharePoint Server 2016 ハイブリッド検索やってみた
 
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントG tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
 
G tech2016 Azureを使った災害復旧の基礎
G tech2016 Azureを使った災害復旧の基礎G tech2016 Azureを使った災害復旧の基礎
G tech2016 Azureを使った災害復旧の基礎
 
初めてでも大丈夫!SharePoint 開発の第一歩
初めてでも大丈夫!SharePoint 開発の第一歩初めてでも大丈夫!SharePoint 開発の第一歩
初めてでも大丈夫!SharePoint 開発の第一歩
 

Similar to “SharePoint Online Management Shell” をプログラムから実行する

財務分析勉強会挨拶
財務分析勉強会挨拶財務分析勉強会挨拶
財務分析勉強会挨拶
oranie Narut
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
Teruo Adachi
 
20130302 わんくま勉強会大阪 tfsを使ってみよう
20130302 わんくま勉強会大阪 tfsを使ってみよう20130302 わんくま勉強会大阪 tfsを使ってみよう
20130302 わんくま勉強会大阪 tfsを使ってみよう
Takuya Kawabe
 

Similar to “SharePoint Online Management Shell” をプログラムから実行する (20)

運用を見据えた失敗しないOffice365導入
運用を見据えた失敗しないOffice365導入運用を見据えた失敗しないOffice365導入
運用を見据えた失敗しないOffice365導入
 
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsサイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOps
 
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズDon't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
Office365勉強会 #23 Azure AD のテナント設計(Office365管理者向け)
Office365勉強会 #23 Azure AD のテナント設計(Office365管理者向け)Office365勉強会 #23 Azure AD のテナント設計(Office365管理者向け)
Office365勉強会 #23 Azure AD のテナント設計(Office365管理者向け)
 
セキュアに使おう Microsoft Teams
セキュアに使おう Microsoft Teamsセキュアに使おう Microsoft Teams
セキュアに使おう Microsoft Teams
 
LightSwitchで遊んでみた
LightSwitchで遊んでみたLightSwitchで遊んでみた
LightSwitchで遊んでみた
 
勉強会:設定管理について
勉強会:設定管理について勉強会:設定管理について
勉強会:設定管理について
 
働き方が大きく変わった 入社3年目のときのとあるエピソード
働き方が大きく変わった 入社3年目のときのとあるエピソード働き方が大きく変わった 入社3年目のときのとあるエピソード
働き方が大きく変わった 入社3年目のときのとあるエピソード
 
鹿駆動
鹿駆動鹿駆動
鹿駆動
 
Roo
RooRoo
Roo
 
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
幅広い技術力が身につくSalesforceエンジニアのススメ〜入門編〜
 
社内SEのキャリアについて分析してみた
社内SEのキャリアについて分析してみた社内SEのキャリアについて分析してみた
社内SEのキャリアについて分析してみた
 
ごった煮じゃNight!vol.1
ごった煮じゃNight!vol.1ごった煮じゃNight!vol.1
ごった煮じゃNight!vol.1
 
財務分析勉強会挨拶
財務分析勉強会挨拶財務分析勉強会挨拶
財務分析勉強会挨拶
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
アジャイル開発&TFS導入
アジャイル開発&TFS導入アジャイル開発&TFS導入
アジャイル開発&TFS導入
 
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
 
神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422
 
20130302 わんくま勉強会大阪 tfsを使ってみよう
20130302 わんくま勉強会大阪 tfsを使ってみよう20130302 わんくま勉強会大阪 tfsを使ってみよう
20130302 わんくま勉強会大阪 tfsを使ってみよう
 

“SharePoint Online Management Shell” をプログラムから実行する