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