Comment interroger et modifier le statut de présence des utilisateurs des équipes avec PowerShell

Il peut être nécessaire de vérifier le statut de présence de l'utilisateur (En ligne/Absent/Occupé) dans Microsoft Teams avant d'effectuer une action particulière pour certains scripts d'intégration. Voyons comment obtenir et modifier le statut d'un utilisateur dans Teams à l'aide de l'API Microsoft Graph et de PowerShell.

Contenu:

Si leMicrosoft.Graphmodule est installé sur votre ordinateur, connectez-vous à votre locataire grâce à votre compte :

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

Si Microsoft.Graph n'est pas installé, vous pouvez l'installer comme suit :

Install-Module Microsoft.Graph -Scope AllUsers

Spécifiez l'UPN de l'utilisateur dont vous souhaitez obtenir le statut :

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

Statuts de présence disponibles :

EN RAPPORT:Comment modifier l’arrière-plan de MS Teams

  • Disponibilité: Disponible, Occupé, Absent, Hors ligne
  • Activité: Disponible, InACall, DoNotDisturb, InAConferenceCall, Away, OffWork, BeRightBack

Vous pouvez répertorier les statuts de présence Teams pour tous les utilisateurs du locataire :

$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

Si vous souhaitez obtenir un statut d'utilisateur dans Teams à partir d'un script, créez une nouvelle application (Azure AD -> Enregistrement de l'application) et déléguezPresence.ReadWrite.Alll'autorisation (ouPresence.ReadetPresent.Read.Allautorisations lors de l'exécution d'une application en tant qu'utilisateur).

Connectez-vous à votre locataire et obtenez un token :

$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 

Découvrez comment accéder à Azure depuis PowerShell via l’API Microsoft Graph.

Lorsque vous accédez à Azure via l'API, vous devez fournir un ID utilisateur (ObjectId, User Object GUID) au lieu de UserPrincipalName (UPN).

$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 

Vous pouvez également utiliser cette application Azure pour lire ou envoyer un message au chat Teams à l'aide de PowerShell.

Comment modifier le statut de présence des équipes à partir de PowerShell

Vous pouvez utiliser PowerShell et l'API Graph pour modifier le statut de présence d'un utilisateur dans Teams. Connectez-vous à Azure à l’aide de l’API Graph comme indiqué ci-dessus.

Utilisez le script suivant pour modifier le statut d'un utilisateur pendant 1 heure (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"

Vérifiez que le statut de l'utilisateur dans Teams a changé :

Get-MgCommunicationPresence -PresenceId $UserId

Related Posts