Cum să interoghezi și să schimbi starea prezenței utilizatorilor echipelor cu PowerShell

Poate fi necesar să verificați starea prezenței utilizatorului (Online/Away/Ocupat) în Microsoft Teams înainte de a efectua o anumită acțiune pentru unele scripturi de integrare. Să aruncăm o privire la cum să obțineți și să modificați starea unui utilizator în Teams folosind API-ul Microsoft Graph și PowerShell.

Continut:

Obțineți starea prezenței utilizatorilor Teams prin PowerShell

DacăMicrosoft.Graphmodulul este instalat pe computer, conectați-vă la chiriaș folosind contul dvs.:

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

Dacă Microsoft.Graph nu este instalat, îl puteți instala după cum urmează:

Install-Module Microsoft.Graph -Scope AllUsers

Specificați UPN-ul utilizatorului a cărui stare doriți să obțineți:

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

Stări de prezență disponibile:

LEGATE:Cum se schimbă fundalul MS Teams

  • Disponibilitate: Disponibil, Ocupat, Deplasat, Offline
  • Activitate: Disponibil, InACall, DoNotDisturb, InAConferenceCall, Away, OffWork, BeRightBack

Puteți lista stările de prezență Teams pentru toți utilizatorii din chiriaș:

$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

Dacă doriți să obțineți un statut de utilizator în Teams dintr-un script, creați o nouă aplicație (Azure AD -> Înregistrare aplicație) și delegațiPresence.ReadWrite.Allpermisiunea acestuia (sauPresence.ReadşiPresent.Read.Allpermisiuni atunci când rulați o aplicație ca utilizator).

Conectați-vă la chiriaș și obțineți un simbol:

$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 

Aflați mai multe despre cum să accesați Azure din PowerShell prin Microsoft Graph API.

Când accesați Azure prin API, trebuie să furnizați un ID de utilizator (ObjectId, User Object GUID) în loc 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 

De asemenea, puteți utiliza această aplicație Azure pentru a citi sau a trimite un mesaj către chatul Teams folosind PowerShell.

Puteți folosi PowerShell și API-ul Graph pentru a modifica starea de prezență a unui utilizator în Teams. Conectați-vă la Azure folosind API-ul Graph, așa cum se arată mai sus.

Utilizați următorul script pentru a schimba starea unui utilizator timp de 1 oră (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"

Verificați dacă starea utilizatorului în Teams sa schimbat:

Get-MgCommunicationPresence -PresenceId $UserId

Related Posts