我们正在整合PowerShell脚本,以便将新版本的应用程序部署到我们的服务器上。我们需要获取运行我们的应用程序的所有RDUserSession
个对象的列表。
我们发现带有-Collection选项的Get-RDUserSession
命令将返回系统上的所有用户,包括远程登录但未运行RemoteApp的管理员。
我们想要做的是启动所有运行远程应用程序的用户,以便我们可以执行更新。
现在我们获取RDUserSessions
的列表并使用Send-RDUserMessage
向他们发送所有消息,但我们发现我们也在发送消息,然后启动,管理员正在尝试运行脚本。
有没有办法让应用程序列表在RDUserSession
?
答案 0 :(得分:0)
#Load your applications in an array
$arr = @("a.exe", "b.exe")
#Get the RD User Sessions
$rdsessions = Get-RDUserSession
#Create a blank array to capture your users
$usrarr = @()
#Loop through the applications in the array
foreach($app in $arr)
{
#Loop through each of the sessions.
foreach($rdsession in $rdsessions)
{
#Check the application
$proc = Get-WmiObject -Class win32_process -Filter "Name = $app"
#compare the rdsession with the applicaitons session.
if($rdsession.id -eq $proc.SessionId)
{
#Load the true to the hash
$obj = New-Object -TypeName psobject -Property @{User = $rdsession.UserName; Application = $app}
$usrarr += $obj
}
}
}
#Now you can take the data in the array and send a message.
Foreach($usr in $usrarr)
{
#send an email or a net send message.
#code here....
}