Det kan være nødvendigt at kontrollere brugerens tilstedeværelsesstatus (Online/Uppe/Optaget) i Microsoft Teams, før du udfører en bestemt handling for nogle integrationsscripts. Lad os se på, hvordan man får og ændrer en brugers status i Teams ved hjælp af Microsoft Graph API og PowerShell.
Indhold:
- Få Teams brugertilstedeværelsesstatus via PowerShell
- Sådan ændres teams tilstedeværelsesstatus fra PowerShell
HvisMicrosoft.Graphmodulet er installeret på din computer, skal du oprette forbindelse til din lejer ved hjælp af din konto:
Connect-MgGraph -Scopes Presence.Read.All,User.Read.All
Hvis Microsoft.Graph ikke er installeret, kan du installere det som følger:
Install-Module Microsoft.Graph -Scope AllUsers
Angiv UPN for den bruger, hvis status du vil have:
$TeamsUser = Get-MGUser -Userid [email protected]
Get-MgCommunicationPresence -PresenceId $TeamsUser.Id | select Activity, Availability


Tilgængelige tilstedeværelsesstatusser:
RELATERET:Sådan ændres MS Teams-baggrund
- Tilgængelighed: Tilgængelig, Optaget, Væk, Offline
- Aktivitet: Tilgængelig, InACall, DoNotDisturb, InAConferenceCall, Away, OffWork, BeRightBack
Du kan angive Teams tilstedeværelsesstatusser for alle brugere i lejeren:
$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


Hvis du ønsker at få en brugerstatus i Teams fra et script, skal du oprette en ny app (Azure AD -> App-registrering) og delegerePresence.ReadWrite.Alltilladelse til det (ellerPresence.ReadogPresent.Read.Alltilladelser, når du kører en app som bruger).
Opret forbindelse til din lejer og få et 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
Få mere at vide om, hvordan du får adgang til Azure fra PowerShell via Microsoft Graph API.
Når du får adgang til Azure via API, skal du angive et bruger-id (ObjectId, User Object GUID) i stedet for 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
Du kan også bruge denne Azure-app til at læse eller sende en besked til Teams-chatten ved hjælp af PowerShell.
Sådan ændres teams tilstedeværelsesstatus fra PowerShell
Du kan bruge PowerShell og Graph API til at ændre en brugers tilstedeværelsesstatus i Teams. Opret forbindelse til Azure ved hjælp af Graph API som vist ovenfor.
Brug følgende script til at ændre en brugerstatus i 1 time (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"
Tjek, at brugerstatussen i Teams er ændret:
Get-MgCommunicationPresence -PresenceId $UserId















