כיצד לבצע שאילתה ולשנות את מצב נוכחות המשתמש של 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

