ค้นหาเว็บไซต์

วิธีสอบถามและเปลี่ยนสถานะการแสดงตนของผู้ใช้ของทีมด้วย 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

บทความที่เกี่ยวข้อง