PowerShell一覧

Azure ポータルの [アプリの登録] で [サポートされるレガシ API] から Exchange を選択できない

Azure ポータルで Azure AD にアプリを登録した後、 - からアプリの使用するアクセス許可を事前に登録する場合があります。以前は以下のようにこの画面の に Exchange がありましたが、2020/11/18 ごろから Exchange は無くなりました。 これは、Outlook REST API の廃止がアナウンスされたことに起因するものです。Outlook REST API を使用する新しいアプリが登録できないように、 から Exchange が削除されました。 Outlook REST API も含め、複数の API がこの GUI の変更の影響を...

NO IMAGE

Microsoft Graph PowerShell SDK の試し方

Microsoft Graph を使用する方法として、Microsoft Graph PowerShell SDK を使用する方法があります。もともと SDK を使用しなくても PowerShell なら比較的容易に Microsoft Graph をはじめとした REST API を使用できますが、なるべく自分でコードを書きたくない場合は Microsoft Graph PowerShell SDK を使用するというのも選択肢になります。 なお Microsoft Graph PowerShell SDK はすでに GA していますが、ところどころ実装が不安定なものがあるので注意が必...

NO IMAGE

Exchange Online への PowerShell 接続を非対話的に行う方法

Exchange Online の基本認証無効化および Exchange Online PowerShell V2 Module のリリースに伴い、従来の接続方法からよりセキュアな方法へ見直しが必要になっています。特に夜間バッチなどの自動化システムにおいて、どのように非対話的に Exchange Online へ接続するかを検討する必要があります。 この記事では、非対話的に接続するための考えられる方法と、そのメリット・デメリットを紹介します。 考えられる方法: 従来のまま New-PSSession に -Credential で資格情報を渡す従来の Exchange On...

Microsoft Graph PowerShell SDK Preview

Microsoft Graph PowerShell SDK が GA したので以下の記事を公開しています。Microsoft Graph PowerShell SDK の試し方本記事はプレビュー中の内容について記載したもので、GA バージョンには当てはまりません。 PowerShell 向けの Microsoft Graph のモジュールがプレビュー提供されています。PowerShell から Microsoft Graph を使用するためのラッパーのようなモジュールになっています。以前は PowerShell Gallery にも登録されていない状態でしたが、現時点では Power...

NO IMAGE

Windows PowerShell で MSAL を使って EWS 用のアクセス トークンを取得する

C# で MSAL (Microsoft.Identity.Client) を使って EWS 用のアクセス トークンを取得する方法は Authenticate an EWS application by using OAuth に記載されています。しかしながら PowerShell の場合については Docs に記載がありません。こちらのブログでは PowerShell の場合についての記載がありますが、ADAL も MSAL も使用しない実装になっています。「ライブラリを使用しなくても実装できることをわざわざライブラリを使用して実装するのは面倒」と考えることもできますが、ブログに記載の方法...

NO IMAGE

RobustCloudCommand Module の紹介

以前は Script だった Start-RobustCloudCommand.ps1 が、Module になってしかも MFA にも対応したということで、使い方を紹介します。 おさらい Exchange Online の PowerShell はスロットリングやセッションの不安定さなどの問題から、長時間大量のオブジェクトに対する処理を実行するのがものすごく苦手です。そんな時にセッションを管理しながら Exchange Online のコマンドを実行するのが Start-RobustCloudCommand.ps1 でした。紹介ブログが日本語にも翻訳されていたので、 Start-...

NO IMAGE

Exchange Online の全ユーザーのメールボックスを取得する

Exchange Online PowerShell V2 Module の登場で、大量のオブジェクトでも通信が安定するようになりました。この記事の内容は初回投稿のまま残していますが、現在は Get-EXOMailbox コマンドを使用することで大量のメールボックスも取得しやすくなっています。 Exchange Online では、以下のような全ユーザーを取得するコマンドが失敗するという話をよく聞きます。 Get-Mailbox -ResultSize Unlimited これは割と有名な話で、特に大規模な環境でユーザー数が多いと失敗します。データ量が多くなることが問題の ...

NO IMAGE

Office 365 Reporting Web サービスの試し方

Office 365 Reporting Web Service を簡単に試す方法はありませんが、PowerShell を使用することで比較的簡単に動作を確認できます。紹介するのはメッセージ追跡ログの取得方法のみですが、同じ要領で他のレポートも取得できます。 PowerShell で試す Windows PowerShell を起動します。以下のようにコマンドを実行します。認証ダイアログが表示されたら Office 365 の管理者の資格情報を入力してください。ここでは検索条件として差出人のメール アドレスを指定しているので、適宜変更してください。 $Credential ...

NO IMAGE

Office 365 Reporting web service の MessageTraceDetail をローカライズする

リファレンスには以下のように書いてありますが、きちんと Accept-Language ヘッダーをつけてあげると MessageTraceDetail のレスポンスはローカライズされます。 Explicitly set the Accept-Language HTTP request header. Currently there is nothing localized that comes through the Reporting web service, but that can change, and if your customers are using a differe...

Exchange Online の PowerShell で警告出力を取得する方法

Exchange Online の PowerShell では以下のように警告が出力されることがあります。 この警告の内容をスクリプトで取得するには、コマンド自体を Invoke-Command で実行して、WarningVariable で取得します。以下のようにします。 $warn = "" Invoke-Command -Command {Get-Mailbox -ResultSize 1} -Session:(Get-PSSession) -WarningVariable warn こうすると、WarningVariable に指定した変数を参照することで警...