Як запитувати та змінювати статус присутності користувача Teams за допомогою PowerShell

Admin

Може знадобитися перевірити стан присутності користувача (в мережі/відсутній/зайнятий) у Microsoft Teams перед виконанням певної дії для деяких сценаріїв інтеграції. Давайте розглянемо, як отримати та змінити статус користувача в Teams за допомогою API Microsoft Graph і PowerShell.

Зміст:

  • Отримайте статус присутності користувача Teams через PowerShell
  • Як змінити статус присутності команд за допомогою PowerShell

Отримайте статус присутності користувача Teams через PowerShell

Якщо 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 за допомогою PowerShell

Доступні статуси присутності:

  • Доступність: Доступний, Зайнятий, Не вдома, Офлайн
  • діяльність: Доступний, 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 для всіх користувачів-клієнта

Якщо ви хочете отримати статус користувача в 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 
Дізнайтеся більше про те, як отримати доступ до Azure з PowerShell через Microsoft Graph API.

Під час доступу до Azure через API ви повинні надати ідентифікатор користувача (ObjectId, User Object GUID) замість UserPrincipalName (УПН).

$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 для читання або надішліть повідомлення в чат Teams за допомогою PowerShell.

Як змінити статус присутності команд за допомогою PowerShell

Ви можете використовувати PowerShell і Graph API, щоб змінити статус присутності користувача в Teams. Підключіться до Azure за допомогою Graph API, як показано вище.

Використовуйте наступний сценарій, щоб змінити статус користувача на 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

PowerShell: оновіть статус присутності користувача Teams

Як експортувати історію чатів MS Teams за допомогою PowerShell
Як експортувати історію чатів MS Teams за допомогою PowerShell

У цій статті ми розглянемо, як отримати доступ і експортувати історію розмов у чаті Microsoft Tea...