2015-09-20 65 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