Как запросить и изменить статус присутствия пользователя Teams с помощью PowerShell

Admin

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

Содержание:

  • Получить статус присутствия пользователя Teams через PowerShell
  • Как изменить статус присутствия Teams из PowerShell

Получить статус присутствия пользователя Teams через PowerShell

Если Майкрософт. График модуль установлен на вашем компьютере, подключитесь к арендатору под своей учетной записью:

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

Если Microsoft. График не установлен, его можно установить следующим образом:

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 через API Microsoft Graph.

При доступе к Azure через API необходимо указать идентификатор пользователя (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 для чтения или отправить сообщение в чат Teams с помощью PowerShell.

Как изменить статус присутствия Teams из PowerShell

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

Используйте следующий скрипт, чтобы изменить статус пользователя на 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

Как отправить сообщение на канал Teams с помощью PowerShell
Как отправить сообщение на канал Teams с помощью PowerShell

Вы можете отправлять сообщения в каналы Teams из PowerShell с помощью веб-перехватчиков или вызов...

Управление Microsoft Teams с помощью PowerShell
Управление Microsoft Teams с помощью PowerShell

Команды Майкрософт Модуль PowerShell предназначен для управления Teams из командной строки. Вы м...

Как запросить и изменить статус присутствия пользователя Teams с помощью PowerShell
Как запросить и изменить статус присутствия пользователя Teams с помощью PowerShell

Может потребоваться проверить статус присутствия пользователя (в сети/отсутствует/занят) в Micros...