Sådan forespørges og ændres Teams-brugertilstedeværelsesstatus med PowerShell

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:

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

Related Posts