M365関連 プログラム 技術

PowerShellのTeamsコマンドの接続時のやり方

この記事で使用しているMicrosoftTeamsモジュールのバージョンは【6.0.0】を使用してとなります

接続する際の種類

Teamsコマンドである『Connect-MicrosoftTeams』する際にそれぞれ試してみます

引数に何も設定しない

# 引数をなにも設定しない
Connect-MicrosoftTeams

以下画像のようにサインイン画面が表示されるのでそこからアカウントを選択したりして接続します

認証入力画面から認証する

# 認証画面の情報を使用する
Connect-MicrosoftTeams -Credential (Get-Credential)

以下画像のように資格情報を求められるので入力してOKをクリックすると入力した内容で認証を実施します。この際に使用するアカウントに二段階認証がかかっている場合はエラーが発生するので注意してください

あらかじめ認証情報を設定する

$userName = "認証時に使用するメールアドレス"
$passWord = ConvertTo-SecureString -AsPlainText "$userNameのパスワード" -Force
$credential = New-Object System.Management.Automation.PSCredential($userName, $passWord)
Connect-MicrosoftTeams -Credential $credential

上記の方法で使用するアカウントに二段階認証がかかっている場合はエラーが発生するので注意してください

Azure認証(アプリ認証)経由で認証する

Azureアプリケーションの設定等はこれまで何回か紹介しているので省略します。以下の記事を参考にしてください

関連記事
C#・PowerShellで会議室のイベントを取得(アプリケーション版)<準備編> - ナストンのまとめ
C#・PowerShellで会議室のイベントを取得(アプリケーション版)<準備編> - ナストンのまとめ

以前、業務で会議室の使用状況を取得するツールを作成する必要があり、その際に調べて実装したメモとなります API アクセス ...

続きを読む

必要なAzureアプリのAPI許可は以下のサイトの下のほうにあります

MSサイト
Teams PowerShell モジュールでのアプリケーション ベースの認証 - Microsoft Teams | Microsoft Learn
Teams PowerShell モジュールでのアプリケーション ベースの認証 - Microsoft Teams | Microsoft Learn

Microsoft Teams の管理に使用される Teams PowerShell モジュールでのアプリケーション ベ ...

続きを読む

$clientSecret = "クライアントシークレットの値"
$applicationID = "AzureアプリのID"
$tenantID = "テナントID"

$graphtokenBody = @{   
    Grant_Type    = "client_credentials"   
    Scope         = "https://graph.microsoft.com/.default"   
    Client_Id     = $applicationID
    Client_Secret = $clientSecret   
}  

$graphToken = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$tenantID/oauth2/v2.0/token" -Method POST -Body $graphtokenBody | Select-Object -ExpandProperty Access_Token 

$teamstokenBody = @{   
    Grant_Type    = "client_credentials"   
    Scope         = "48ac35b8-9aa8-4d74-927d-1f4a14a0b239/.default"   
    Client_Id     = $applicationID 
    Client_Secret = $clientSecret 
} 

$teamsToken = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$tenantID/oauth2/v2.0/token" -Method POST -Body $teamstokenBody | Select-Object -ExpandProperty Access_Token 
Connect-MicrosoftTeams -AccessTokens @("$graphToken", "$teamsToken")

コード内にある【48ac35b8-9aa8-4d74-927d-1f4a14a0b239】の値は必須みたいです

Azure認証(ユーザー認証)経由で認証する

必要なAzureアプリのAPI許可は以下のサイトにあります

MSサイト
Connect-MicrosoftTeams (MicrosoftTeamsPowerShell) | Microsoft Learn
Connect-MicrosoftTeams (MicrosoftTeamsPowerShell) | Microsoft Learn

The Connect-MicrosoftTeams cmdlet connects to Microsoft Team ...

続きを読む

$applicationID = "AzureアプリのID"
$tenantID = "テナントID"
$clientSecret = "クライアントシークレットの値"
$clientSecret = [Net.WebUtility]::URLEncode($clientSecret)
$userName = "認証に使用するユーザーアドレス"
$passWord = "$userNameのパスワード"
$passWord = [Net.WebUtility]::URLEncode($passWord)
    
$uri = "https://login.microsoftonline.com/$tenantID/oauth2/v2.0/token"
$body = "client_id=$applicationID&client_secret=$clientSecret&grant_type=password&username=$userName&password=$passWord"
$requestParameters = @{
    URI         = $uri
    Method      = "POST"
    ContentType = "application/x-www-form-urlencoded"
}
$graphToken = (Invoke-RestMethod @RequestParameters -Body "$body&scope=https://graph.microsoft.com/.default").access_token
$teamsToken = (Invoke-RestMethod @RequestParameters -Body "$body&scope=48ac35b8-9aa8-4d74-927d-1f4a14a0b239/.default").access_token
Connect-MicrosoftTeams -AccessTokens @($graphToken, $teamsToken)

上記の方法で使用するアカウントに二段階認証がかかっている場合はエラーが発生するので注意してください

-M365関連, プログラム, 技術
-, ,