有時需要針對Azure Virtual Desktop所有在線使用者發送消息,可以使用azure portal,也可以使用powershell,範例代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ResourceGroupName="" $HostPoolName="" $HSessionHosts = (Get-AzWvdSessionHost -ResourceGroupName $ResourceGroupName -HostPoolName $HostPoolName | Where-object -Property AllowNewSession -eq $true).Name foreach ($HSessionHost in $HSessionHosts) { $HSessionDetail = $HSessionHost.split("/") $HSessionIDs = (Get-AzWvdUserSession -ResourceGroupName $ResourceGroupName -HostPoolName $HostPoolName -SessionHostName $HSessionDetail[1]).name if ($HSessionIDs -ne $null) { foreach ($HSessionID in $HSessionIDs) { if ($HSessionID -ne $null) { $SplitHSessionID = $HSessionID.split("/").split("/") Send-AzWvdUserSessionMessage -ResourceGroupName $ResourceGroupName -HostPoolName $SplitHSessionID[0] -SessionHostName $SplitHSessionID[1] -UserSessionId $SplitHSessionID[2] -MessageBody '系统将在18:00 AM关机,如需使用请在关机后重新连线' -MessageTitle '注意' } } } } |
如果是需要將所有使用者登出,則範例代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ResourceGroupName="" $HostPoolName="" $HSessionHosts = (Get-AzWvdSessionHost -ResourceGroupName $ResourceGroupName -HostPoolName $HostPoolName | Where-object -Property AllowNewSession -eq $true).Name foreach ($HSessionHost in $HSessionHosts) { $HSessionDetail = $HSessionHost.split("/") $HSessionIDs = (Get-AzWvdUserSession -ResourceGroupName $ResourceGroupName -HostPoolName $HostPoolName -SessionHostName $HSessionDetail[1]).name if ($HSessionIDs -ne $null) { foreach ($HSessionID in $HSessionIDs) { if ($HSessionID -ne $null) { $SplitHSessionID = $HSessionID.split("/").split("/") Remove-AzWvdUserSession -ResourceGroupName $ResourceGroupName -HostPoolName $SplitHSessionID[0] -SessionHostName $SplitHSessionID[1] -Id $SplitHSessionID[2] } } } } |
其他的可以根據需要自行調整