วิธีสอบถามและเปลี่ยนสถานะการแสดงตนของผู้ใช้ของทีมด้วย PowerShell
อาจจำเป็นต้องตรวจสอบสถานะการแสดงตนของผู้ใช้ (ออนไลน์/ไม่อยู่/ไม่ว่าง) ใน Microsoft Teams ก่อนที่จะดำเนินการบางอย่างสำหรับสคริปต์การรวมบางตัว มาดูวิธีรับและเปลี่ยนสถานะผู้ใช้ใน Teams โดยใช้ Microsoft Graph API และ 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
คุณสามารถแสดงรายการสถานะการแสดงตนของทีมสำหรับผู้ใช้ทั้งหมดในผู้เช่า:
$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 จากสคริปต์ ให้สร้างแอปใหม่ (Azure AD -> การลงทะเบียนแอป) และมอบหมาย
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 คุณต้องระบุ ID ผู้ใช้ (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
วิธีการเปลี่ยนสถานะการแสดงตนของทีมจาก PowerShell
คุณสามารถใช้ PowerShell และ Graph API เพื่อเปลี่ยนสถานะการแสดงตนของผู้ใช้ใน Teams เชื่อมต่อกับ Azure โดยใช้ Graph API ดังที่แสดงด้านบน
ใช้สคริปต์ต่อไปนี้เพื่อเปลี่ยนสถานะผู้ใช้เป็นเวลา 1 ชั่วโมง (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

