当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] RDS/终端服务器向所有活动用户发送消息/通知

作者:精品下载站 日期:2024-12-14 07:12:57 浏览:15 分类:玩电脑

RDS/终端服务器向所有活动用户发送消息/通知


RDSMessenger.ps1

更新 11/09/2019:如果您喜欢这个脚本作为模块或 EXE,请参阅我的新帖子

在 RDServer(远程桌面)环境(也称为旧名称终端服务)中,您需要通知所有活动用户,因为有维护或其他任何事情。我搜索了一段时间来找到一个简单的解决方案,但没有找到任何合适的解决方案。所以我决定编写一个简短的 powershell 脚本来完成这项任务。
Windows Server 2012 引入了新的 cmdlet
https://docs.microsoft.com/en-us/powershell/module/remotedesktop/send-rdusermessage?view=win10-ps
发送-RDUserMessage

目标:

[玩转系统] RDS/终端服务器向所有活动用户发送消息/通知

链接到我的 github 存储库:
https://github.com/blog-it-koehler-com/rdsmessenger

您可以在导入到所需的服务器后使用此 cmdlet,以便发送通知。此消息也会显示在远程应用程序中,因此可以在桌面和远程应用程序的混合环境中使用。 (WIN2012/R2、WIN2016和WIN2019默认包含此模块)。

注意:如何找到 RD-Broker?如果您不知道哪台服务器是代理,请打开您的 ServerManager 并连接属于集合一部分的所有服务器(ServerManager 会告诉您缺少哪一台)
在 ServerManager 中导入所有服务器后,您可以看到配置和还有经纪人

[玩转系统] RDS/终端服务器向所有活动用户发送消息/通知

如前所述,有一个 cmdlet 可以为一个用户生成消息。我的脚本的核心是以下几行:

Import-Module RemoteDesktop
$broker = "FQDN of the Broker"
$userids = Get-RDUserSession -ConnectionBroker "$broker" | sort Username
foreach($uid in $userids){
            $id = (($uid).UnifiedSessionID)
             Send-RDUserMessage -HostServer $($uid.HostServer) -UnifiedSessionID $id -MessageTitle "messagetitel" -MessageBody "text in your messagebox"
             }

通过以下脚本,您在执行脚本时会看到一些输出。

Import-Module RemoteDesktop
#fill message
$msgtitel = Read-Host "Type message titel"
$msg = Read-Host "Type message..."
$broker = Read-Host "Type FQDN of rd broker server"
#getting all user ids 
$userids = Get-RDUserSession -ConnectionBroker "$broker" | Sort-Object Username
$sessions = ($userids | Select-Object UserName,UnifiedSessionId)|Out-String
Write-host "Getting all active sessions on rd broker $broker" -ForegroundColor Yellow
Write-host "$sessions" -ForegroundColor Yellow
#send message to all user ids
foreach($uid in $userids){
            $id = (($uid).UnifiedSessionID)
            $user = (($uid).UserName)
            Send-RDUserMessage -HostServer $($uid.HostServer) -UnifiedSessionID $id -MessageTitle "$msgtitel" -MessageBody "$msg"
            Write-Host "Sending message to user: $user with titel: $msgtitel" -ForegroundColor Green
}
pause

这是我的脚本正在运行。

[玩转系统] RDS/终端服务器向所有活动用户发送消息/通知

在这个简短的介绍之后,请参阅一些使用参数处理来自 github 的 ps 脚本的提示:

示例 1 简单执行:

[玩转系统] RDS/终端服务器向所有活动用户发送消息/通知

示例 2 使用参数执行
.\rdmessenger.ps1 -rdbroker rds02.demo01.it-koehler.com -messagetitel “管理消息” -message “要显示的消息” -Verbose

[玩转系统] RDS/终端服务器向所有活动用户发送消息/通知

示例 3 使用参数执行 -rdsessionhost
.\rdmessenger.ps1 -rdbroker rds02.demo01.it-koehler.com -messagetitel “admin message” -message “message to display” -rdsessionhost rds02.demo01.it-koehler.com

[玩转系统] RDS/终端服务器向所有活动用户发送消息/通知

该脚本的特点:

  • 检查所需模块
  • 导入所需模块
  • 等待 10 秒,然后将通知发送给所有用户
  • 看看它用详细命令做了什么

如果您想知道它的作用,也可以看看我在脚本中的评论。

如果您还有其他问题请给我留言。如果您喜欢该工具,请单击“有用”。享受向用户发送消息的乐趣。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯