2015-09-20 56 views
1

我发现如何列出在Windows会话,我从要么...如何获得已知用户名(互动)会话#批量

c:\logonsessions -c 

Logonsessions v1.3 
Copyright (C) 2004-2015 Mark Russinovich 
Sysinternals - wwww.sysinternals.com 

Session,User Name,Auth Package,Logon Type,Session,Sid,Logon Time,Logon Server,DNS Domain,UPN,Processes 
00000000:000003e7,WORKGROUP\pcname$,NTLM,(none),0,S-1-5-18,9/19/2015 2:51:11 PM,,,, 
00000000:0000a5ea,,NTLM,(none),0,(none),9/19/2015 2:51:11 PM,,,, 
00000000:000003e4,WORKGROUP\pcname$,Negotiate,Service,0,S-1-5-20,9/19/2015 2:51:15 PM,,,, 
00000000:000003e5,NT AUTHORITY\LOCAL SERVICE,Negotiate,Service,0,S-1-5-19,9/19/2015 2:51:15 PM,,,, 
00000000:000003e3,NT AUTHORITY\IUSR,Negotiate,Service,0,S-1-5-17,9/19/2015 2:51:29 PM,,,, 
00000000:000237ce,NT AUTHORITY\ANONYMOUS LOGON,NTLM,Network,0,S-1-5-7,9/19/20152:51:40 PM,,,, 
00000000:0008f3b8,pcname\targetuser,NTLM,Interactive,3,S-1-5-21-619702857-3907507909-453961168-1000,9/19/2015 3:13:18 PM,D,,, 
00000000:000c0c9d,IIS APPPOOL\siteA,Negotiate,Service,0,S-1-5-82-2579537164-80563901-952080054-1630798588-2545742339,9/19/2015 3:31:45 PM,,,, 
00000000:001df99a,IIS APPPOOL\siteB,Negotiate,Service,0,S-1-5-82-3368103016-2489489752-2714024436-2368677762-3860426159,9/19/2015 5:16:52 PM,,,, 

c:\query session 
SESSIONNAME  USERNAME     ID STATE TYPE  DEVICE 
              0 Disc 
>console   targetuser    3 Active 
rdp-tcp         65536 Listen 
以下输出

所以,如果已知用户名是“targetuser”,那么每个会话ID以上3

我如何读/解析此获取会话数?我预计未来它不会总是“3”。另一种选择是依靠什么是控制台用户,因为只能有一个权利? (在此工作站上未启用用户切换)并返回控制台用户的会话编号。

为什么我关心会话#?因为我需要运行一些能够在工作站上提示用户的事情,如果他们现在想做或不做。

当我启动通过这个过程......

psexec -accepteula -i 3 -d "C:\Program Files (x86)\Skype\Phone\Skype.exe" /callto:[user_ID] 

...我必须能够提供会话ID(在这种情况下3)

编辑:显然,这可能是更容易...

c:\query session targetuser 
SESSIONNAME  USERNAME     ID STATE TYPE  DEVICE 
>console   targetuser    3 Active 

......所以这是已经接近我想要的东西,现在我只是要解析的第二行,找到ID(在这种情况下,“3”),并将其存储为一个变量。

回答

1
for /f "tokens=3 skip=1" %%# in ('qwinsta targetuser') do set "userid=%%#" 
echo %userid% 

请注意,qwinsta/query/terminal服务未安装在家庭/基本版本的Windows上。

+1

我不知道我关注 - 我知道的是“targetuser”是用户名 - 我想查找的是会话ID(在我的示例中,这是3,但它不会每次都是。帮助我,我认为这是有效的:对于/ f“tokens = 3 skip = 1”%% A('query session targetuser')do set“sessionid = %% A” echo%sessionid% – notAduck

+0

@ user3769418 - yes I '错过了一个'%'。'qwinsta'和'query session'是别名 - 都是终端服务命令的一部分(用于远程会话) – npocmaka