PowerShell を使用して Teams ユーザーのプレゼンス ステータスをクエリおよび変更する方法

一部の統合スクリプトで特定のアクションを実行する前に、Microsoft Teams でのユーザーのプレゼンス ステータス (オンライン/退席中/取り込み中) を確認する必要がある場合があります。 Microsoft Graph API と PowerShell を使用して、Teams でユーザーのステータスを取得および変更する方法を見てみましょう。

コンテンツ:

もしMicrosoft.グラフモジュールがコンピューターにインストールされている場合は、アカウントを使用してテナントに接続します。

Connect-MgGraph -Scopes Presence.Read.All,User.Read.All

Microsoft.Graph がインストールされていない場合は、次のようにインストールできます。

Install-Module Microsoft.Graph -Scope AllUsers

ステータスを取得するユーザーの UPN を指定します。

$TeamsUser = Get-MGUser -Userid [email protected]
Get-MgCommunicationPresence -PresenceId $TeamsUser.Id | select Activity, Availability

利用可能なプレゼンス ステータス:

関連している:MS Teams の背景を変更する方法

  • 可用性: 利用可能、話中、外出中、オフライン
  • 活動: 利用可能、InACall、DoNotDisturb、InAConferenceCall、Away、OffWork、BeRightBack

テナント内のすべてのユーザーの Teams プレゼンス ステータスを一覧表示できます。

$allUserStatus = @()
$AllUsers=Get-MGUser
foreach ($TeamUser in $AllUsers) 
{ 
$TeamsStatus=Get-MgCommunicationPresence -PresenceId $TeamUser.Id 
$CurUserStatus = New-Object PSObject -Property @{
    Activity=$TeamsStatus.Activity
    Availability=$TeamsStatus.Availability
    DisplayName=$TeamUser.DisplayName
}
$allUserStatus += $CurUserStatus
}
$allUserStatus

Teams のユーザーステータスをスクリプトから取得したい場合は、新しいアプリを作成し (Azure AD -> アプリ登録)、委任します。Presence.ReadWrite.Allそれに対する許可(またはPresence.ReadそしてPresent.Read.Allユーザーとしてアプリを実行するときの権限)。

テナントに接続してトークンを取得します。

$ApplicationID = "1111111-1111-1111-1111-11111111111"
$TenatDomainName = "2222222-2222-2222-2222-222222222222"
$AccessSecret = "3333333333333333333333333333333333333333333"
$Body = @{
    Grant_Type = "client_credentials"
    Scope = "https://graph.microsoft.com/.default"
    client_Id = $ApplicationID
    Client_Secret = $AccessSecret
}
$ConnectGraph = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token -Method POST -Body $Body 

Microsoft Graph API を介して PowerShell から Azure にアクセスする方法の詳細を確認してください。

API 経由で Azure にアクセスする場合は、UserPrincipalName (UPN) の代わりにユーザー ID (ObjectId、ユーザー オブジェクト GUID) を指定する必要があります。

$UserId = "111111-2222-3333-4444-555555555"
$headers = @{
    "Authorization" = "Bearer $($tokenResponse.access_token)"
    "Content-type" = "application/json"
    }
$ApiUrl = "https://graph.microsoft.com/v1.0/users/$UserId/presence"
$Response = Invoke-RestMethod -Method GET -Uri $ApiUrl -ContentType "application\json" -Headers $headers -SkipHeaderValidation
$Response 

この Azure アプリを使用して、PowerShell を使用してメッセージを読んだり、Teams チャットにメッセージを送信したりすることもできます。

PowerShell から Teams のプレゼンス ステータスを変更する方法

PowerShell と Graph API を使用して、Teams でのユーザーのプレゼンス ステータスを変更できます。上に示すように、Graph API を使用して Azure に接続します。

次のスクリプトを使用して、ユーザー ステータスを 1 時間 (PT1H) 変更します。

$UserId = "111111-2222-3333-4444-555555555"
$uri = "https://graph.microsoft.com/beta/users/$userid/presence/setPresence"
$body = @"
{
    "sessionId": "$ApplicationID",
    "availability": "Away",
    "activity": "Away",
    "expirationDuration": "PT1H"
  }
"@
Invoke-RestMethod –Uri $uri –Method Post –Body $body –Headers $headers -ContentType "application/json"

Teams のユーザーのステータスが変更されたことを確認します。

Get-MgCommunicationPresence -PresenceId $UserId

Related Posts