2013-12-10 162 views
-2

我有几个安装了RDS的Windows Server 2012 R2,我需要具有返回数组或对象与指定服务器上的用户及其会话ID的函数。我需要使用非管理员权限运行此功能。在会话主机我跑这个命令:在阵列或对象(powershell,命令行)中登录用户

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE  (TerminalName ="RDP-Tcp") CALL AddAccount "domain\group",2 

...这样的用户已经提升的权限,现在,他们可以使用RDS通过命令行阴影。我需要的ID是我可以从命令“quser”中获得的会话ID。最好的解决办法是,如果我将函数返回数组(与登录的特定服务器上的用户)这样的(或类似的东西,也许对象):

LOGIN ID 
    user1 -> 3 
    user2 -> 4 
    user3 -> 5 

我不知道这个功能或这些命令将解决我的问题,但是我想他们,这是结果:

我尝试这样做: http://gallery.technet.microsoft.com/scriptcenter/Get-UserSessions-Parse-b4c97837 但该命令将返回什么。

此命令:

WMIC /NODE:<COMPUTERNAME> COMPUTERSYSTEM GET USERNAME 

仅返回 “用户名” 和这样的:只有

Get-WmiObject Win32_ComputerSystem | Select UserName 

..returns “用户名” 有下划线。我尝试了很多WMI命令的变体,但结果相似。

回答

0

在'net'的各个版本库中可能有六个脚本来做这件事。 我用这一个:

http://gallery.technet.microsoft.com/scriptcenter/0e43993a-895a-4afe-a2b2-045a5146048a

+0

我试图吨脚本或我在网上找到的命令,但没有解决我的问题。有些东西根本不起作用,有些东西无法按我需要的方式工作。这个脚本返回了很多乱七八糟的东西,比如服务等。我只需要在数组或对象中记录用户及其会话ID。 – devlin

+0

你必须做得比“有些事情不行”更好。没有人知道如何解决这个问题。如果你去找别人寻求帮助,不要让他们玩20个问题试图找出你需要帮助的问题。用足够特定的东西来更新你的问题,以便给我们提供一些工作。 – mjolinor

+0

我故意没有写下那些不起作用的命令,因为我不知道它们是否是我需要的。我想避免出现这种情况,当我们处理任何不适合我的命令时,并且在命令终于运行很长时间后,我会发现这并不能解决我的问题。不过,我用一些不适合我的命令更新了我的问题...... – devlin

0
gwmi -query "Select * from Win32_LogonSession where LogonType = 2" | 
% { 
    $user = $_ 
    gwmi -query "Associators of {$user} Where AssocClass=Win32_LoggedOnUser" | select * 
} 
+0

谢谢您的回复,但这不幸没有任何回报。 – devlin

+0

您可能需要成为管理员。另外,请尝试使用它 - 这是任何Windows管理工具都可以使用的确切的WMI API,因此它可以工作。 –