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
コメント