Het kan nodig zijn om de aanwezigheidsstatus van de gebruiker (Online/Afwezig/Bezet) in Microsoft Teams te controleren voordat u een bepaalde actie uitvoert voor sommige integratiescripts. Laten we eens kijken hoe u de status van een gebruiker in Teams kunt verkrijgen en wijzigen met behulp van de Microsoft Graph API en PowerShell.
Inhoud:
- Ontvang de aanwezigheidsstatus van Teams-gebruikers via PowerShell
- Hoe u de aanwezigheidsstatus van teams kunt wijzigen vanuit PowerShell
Ontvang de aanwezigheidsstatus van Teams-gebruikers via PowerShell
Als de Microsoft. Grafiek module op uw computer is geïnstalleerd, maakt u verbinding met uw tenant via uw account:
Connect-MgGraph -Scopes Presence.Read.All, User.Read.All
Install-Module Microsoft.Graph -Scope AllUsers
Geef de UPN op van de gebruiker wiens status u wilt ophalen:
$TeamsUser = Get-MGUser -Userid [email protected]
Get-MgCommunicationPresence -PresenceId $TeamsUser.Id | select Activity, Availability
Beschikbare aanwezigheidsstatussen:
- Beschikbaarheid: Beschikbaar, Bezet, Afwezig, Offline
- Activiteit: Beschikbaar, InACall, DoNotDisturb, InAConferenceCall, Away, OffWork, BeRightBack
U kunt de aanwezigheidsstatussen van Teams voor alle gebruikers in de tenant weergeven:
$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.
Als u vanuit een script een gebruikersstatus in Teams wilt verkrijgen, maakt u een nieuwe app (Azure AD -> App-registratie) en delegeert u Presence.ReadWrite.All
toestemming daarvoor (of Presence.Read
En Present.Read.All
machtigingen bij het uitvoeren van een app als gebruiker).
Maak verbinding met uw tenant en ontvang een 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
Wanneer u via API toegang krijgt tot Azure, moet u een gebruikers-ID (ObjectId, User Object GUID) opgeven in plaats van GebruikerPrincipalName (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
Hoe u de aanwezigheidsstatus van teams kunt wijzigen vanuit PowerShell
U kunt PowerShell en de Graph API gebruiken om de aanwezigheidsstatus van een gebruiker in Teams te wijzigen. Maak verbinding met Azure met behulp van de Graph API, zoals hierboven weergegeven.
Gebruik het volgende script om een gebruikersstatus voor 1 uur (PT1H) te wijzigen:
$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"
Controleer of de gebruikersstatus in Teams is gewijzigd:
Get-MgCommunicationPresence -PresenceId $UserId