Teams チャットを PowerShell で制御しようというもの。自分のチャットが対象で、グローバル管理者でも他者のチャットは対象にできなかった。
チャットIDの取得からスタート。
Microsoft Learn:Get-MgUserChat
Qiita:PowerShellでTeamsのチャット履歴をcsvに出力する
チャットIDは OneOnOne か Group かで末尾にある程度の規則性があり取得は下記の例で。
Get-MgBetaUserChat -All -UserId $selfUserId
WebUrl プロパティにURLが含まれていて、例えば Edge で開かせるならば下記の例で。
start microsoft-edge:$($_.WebUrl)
特定のチャットに参加しているユーザーの取得。AdditionalProperties に詳細なプロパティが含まれるので展開。
Get-MgBetaUserChatMember -UserId $selfUserId -ChatId $id | Select-Object `
@{Label="@odata.type"; Expression={$_.AdditionalProperties["@odata.type"]}}, `
@{Label="UserId"; Expression={$_.AdditionalProperties["userId"]}}, `
@{Label="Email"; Expression={$_.AdditionalProperties["email"]}}, `
@{Label="TenantId"; Expression={$_.AdditionalProperties["tenantId"]}}, `
* -ExcludeProperty AdditionalProperties
全てのチャットに一律で投稿をする。多重投稿が起きることがあり、チャットID一覧を一度保存してから実行するようにしている。
$chatlist = Get-MgBetaUserChat -All -UserId $selfUserId
# 一度保存してから Foreach-Object に渡さないと多重投稿が起きる
$chatlist | Foreach-Object{$params = @{body=@{content = "message"}}; New-MgBetaUserChatMessage -UserId $selfUserId -ChatId $_.Id -BodyParameter $params}
チャットIDの取得からスタート。
Microsoft Learn:Get-MgUserChat
Qiita:PowerShellでTeamsのチャット履歴をcsvに出力する
チャットIDは OneOnOne か Group かで末尾にある程度の規則性があり取得は下記の例で。
Get-MgBetaUserChat -All -UserId $selfUserId
WebUrl プロパティにURLが含まれていて、例えば Edge で開かせるならば下記の例で。
start microsoft-edge:$($_.WebUrl)
特定のチャットに参加しているユーザーの取得。AdditionalProperties に詳細なプロパティが含まれるので展開。
Get-MgBetaUserChatMember -UserId $selfUserId -ChatId $id | Select-Object `
@{Label="@odata.type"; Expression={$_.AdditionalProperties["@odata.type"]}}, `
@{Label="UserId"; Expression={$_.AdditionalProperties["userId"]}}, `
@{Label="Email"; Expression={$_.AdditionalProperties["email"]}}, `
@{Label="TenantId"; Expression={$_.AdditionalProperties["tenantId"]}}, `
* -ExcludeProperty AdditionalProperties
全てのチャットに一律で投稿をする。多重投稿が起きることがあり、チャットID一覧を一度保存してから実行するようにしている。
$chatlist = Get-MgBetaUserChat -All -UserId $selfUserId
# 一度保存してから Foreach-Object に渡さないと多重投稿が起きる
$chatlist | Foreach-Object{$params = @{body=@{content = "message"}}; New-MgBetaUserChatMessage -UserId $selfUserId -ChatId $_.Id -BodyParameter $params}
※コメント投稿者のブログIDはブログ作成者のみに通知されます