Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用powershell 1从远程计算机中赶走最长的非活动用户?_Powershell_Remote Desktop_Terminal Services - Fatal编程技术网

如何使用powershell 1从远程计算机中赶走最长的非活动用户?

如何使用powershell 1从远程计算机中赶走最长的非活动用户?,powershell,remote-desktop,terminal-services,Powershell,Remote Desktop,Terminal Services,我需要找到一种简单的方法,如果队友忘记注销,可以将他们从服务器上赶走。我们的终端服务限制2个连接。我编写了以下函数来获取登录的用户。据我所知,在powershell 2中有更好的方法可以做到这一点,但目前我仍坚持使用版本1 下面的函数将获得每台服务器的登录名。(如果你知道一种更漂亮的方法,请随意教我。)我对func不满意,希望能从你那里学到一些技巧。) 因此,我需要用户列表,如果连接数高于允许的最大值,我必须将一个人踢出。如果你知道从服务器上获取这些信息的方法,我将非常感谢你的帮助 $name

我需要找到一种简单的方法,如果队友忘记注销,可以将他们从服务器上赶走。我们的终端服务限制2个连接。我编写了以下函数来获取登录的用户。据我所知,在powershell 2中有更好的方法可以做到这一点,但目前我仍坚持使用版本1

下面的函数将获得每台服务器的登录名。(如果你知道一种更漂亮的方法,请随意教我。)我对func不满意,希望能从你那里学到一些技巧。)

因此,我需要用户列表,如果连接数高于允许的最大值,我必须将一个人踢出。如果你知道从服务器上获取这些信息的方法,我将非常感谢你的帮助

$name = "myserver"
$maxConnections = 2

$users = get-terminal-users($name)   

if($users.Count -eq $maxConnections)
{
    $idList = $users | ? { $_.State -eq "Disc" } | select -First 1 | foreach { $_.ID }   

    foreach($id in $idList)
    {          
        invoke-expression -Command ".\logoff.exe /SERVER:$name $id -V"                  
    }
}
问题是我只能与活动连接进行交互。废弃的连接仍然会耗尽可用的连接,我似乎无法对它们做太多。具有光盘状态的用户似乎用完了终端连接,当我出于某种原因在其id上调用注销时,本地进程终止。有没有办法摆脱磁盘连接

rwinsta.exe似乎也只适用于活动连接


我正在XP上运行脚本,目标是Win 2003服务器。

为什么要使用PowerShell?使用正确的工具进行作业。在这种情况下,这将是组策略


您将$id错误地添加到此行的自定义对象中:

$d | add-member -membertype noteproperty -name ID -value $id
断开连接的会话没有会话名称请参见:

quser.exe /SERVER:mycomputer
USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
winfred                                   2  Disc      4+21:05  2/28/2012 8:38 AM
并且需要$columShift,除了ID Noteproperty之外,所有属性上都有$columShift。因此,当您尝试注销断开连接的会话时,您错误地将ID指定为logoff.exe

相反,该行应为:

$d | add-member -membertype noteproperty -name ID -value $columns[2 + $columShift]

谢谢你的反馈。根据您推荐的线程,可以通过Windows 2008 R2中的Powershell以编程方式管理TS配置(RDS配置)。讨论主要是关于设置会话超时限制。感谢您的反馈。你是对的;id解析不正确。现在很好用。
$d | add-member -membertype noteproperty -name ID -value $columns[2 + $columShift]