広告

Azure Automation で Exchange online への接続

Automation

Azure Automation はサンドボックスで動いているので、コマンドラインがローカル通りで動くとは限りません。
Exchange online にログインするための import-PSSession がその一つです。

一応対策として、直接 Import-PSSession を使うではなく、Import-Module 経由で実行することで、エラーなく実行できます。接続後、Get-Mailboxなどのコマンドも正常に動作するようになっています。
ただし、インポートしたものが本当のモジュールではないので、以下のような警告メッセージが表示されます。

The names of some imported commands from the module 'tmp_xxxx.sh4' include unapproved verbs that might make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of approved verbs, type Get-Verb.

実行の仕方

では、実際にログインするための流れをコードの注釈ベースで説明します。

ログインの流れは以下になります。

# Azure Automation の 「資格情報」を使って、認証用のオブジェクトを作成
# "New-Object System.Management.Automation.PSCredential" で作成しても同じ
$userCred = Get-AutomationPSCredential -Name '<資格情報名>'

# Exchangeサインイン:セッション作成
$exSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $userCred -Authentication "Basic" -AllowRedirection

# Exchangeサインイン:セッションインポート(ここが対策する部分になります)
import-module(Import-PSSession -Session $exSession -DisableNameChecking -AllowClobber) -Global

# メールボックスの 属性を取得してみる
(Get-Mailbox).UserPrincipalName

コメント

タイトルとURLをコピーしました