使用powershell

时间:2016-04-19 21:18:49

标签: powershell remote-desktop

我们正在整合PowerShell脚本,以便将新版本的应用程序部署到我们的服务器上。我们需要获取运行我们的应用程序的所有RDUserSession个对象的列表。

我们发现带有-Collection选项的Get-RDUserSession命令将返回系统上的所有用户,包括远程登录但未运行RemoteApp的管理员。

我们想要做的是启动所有运行远程应用程序的用户,以便我们可以执行更新。

现在我们获取RDUserSessions的列表并使用Send-RDUserMessage向他们发送所有消息,但我们发现我们也在发送消息,然后启动,管理员正在尝试运行脚本。

有没有办法让应用程序列表在RDUserSession

中运行

1 个答案:

答案 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....
}