כיצד לבצע שאילתה ולשנות את מצב נוכחות המשתמש של Teams באמצעות PowerShell


ייתכן שיהיה צורך לבדוק את מצב הנוכחות של המשתמש (מקוון/לא נמצא/לא פנוי) ב- Microsoft Teams לפני ביצוע פעולה מסוימת עבור קבצי Script מסוימים של שילוב. בוא נראה כיצד להשיג ולשנות מצב של משתמש ב- Teams באמצעות ה- API של Microsoft Graph ו- PowerShell.

קבל את מצב נוכחות המשתמש של Teams באמצעות PowerShell

אם מודול Microsoft.Graph מותקן במחשב שלך, התחבר לדייר באמצעות החשבון שלך:

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

אם Microsoft.Graph אינו מותקן, באפשרותך להתקין אותו באופן הבא:

Install-Module Microsoft.Graph -Scope AllUsers

ציין את ה- UPN של המשתמש שאת המצב שלו ברצונך לקבל:

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

סטטוסי נוכחות זמינים:

  • זמינות: זמין, עסוק, לא נמצא, לא מקוון

  • פעילות: זמין, InACall, DoNotDisturb, InAConferenceCall, 'משם', OffWork, BeRightBack

באפשרותך לפרט את מצבי הנוכחות של Teams עבור כל המשתמשים בדייר:

$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

אם ברצונך לקבל מצב משתמש ב- Teams מתוך קובץ Script, צור יישום חדש (רישום Azure AD -> App) והקצה סמכויות

Presence.ReadWrite.All

הרשאה לכך (או

Presence.Read

ו

Present.Read.All

הרשאות בעת הפעלת יישום כמשתמש).

התחבר לדייר שלך וקבל אסימון:

$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 

קבל מידע נוסף על אופן הגישה ל- Azure מ- PowerShell באמצעות Microsoft Graph API.

בעת גישה ל- Azure דרך API, עליך לספק מזהה משתמש (ObjectId, User Object GUID) במקום 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 

באפשרותך גם להשתמש ביישום Azure זה כדי לקרוא או לשלוח הודעה לצ'אט Teams באמצעות PowerShell.

כיצד לשנות את מצב הנוכחות של Teams מ- PowerShell

באפשרותך להשתמש ב- PowerShell וב- API של Graph כדי לשנות את מצב הנוכחות של משתמש ב- Teams. התחבר ל- Azure באמצעות ה- API של Graph כפי שמוצג לעיל.

השתמש בקובץ ה-script הבא כדי לשנות מצב משתמש למשך שעה אחת (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"

ודא שמצב המשתמש ב- Teams השתנה:

Get-MgCommunicationPresence -PresenceId $UserId