lee*_*d00 7 powershell remote-desktop
当我运行该qwinsta /server:somesrv
命令时,cmd
我可以获得登录到特定Windows服务器的所有当前RDP会话的列表.
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console 0 Conn wdcon
rdp-tcp 65536 Listen rdpwd
rdp-tcp#594 tom1 1 Active rdpwd
rdp-tcp#595 bob1 2 Active rdpwd
Run Code Online (Sandbox Code Playgroud)
是否有可能在Powershell的远程服务器上获得这样的列表,以便数据可以在别处使用?
有多种选择:
qwinsta
对象输出的powershell包装器.轻松解决方案 见下面的例子Cassia.DLL
.Net包装器访问qwinsta
在场景后面运行的本机API .这是TS模块使用的类.更难,但将有利于根据您的需求进行定制. Cassia.DLL
存取使用P/Invoke( ,wtsapi32.dll
,).kernel32.dll
艰难而且过于复杂.winsta.dll
适用于qwinsta的PowerShell包装器
function Get-TSSessions {
param(
$ComputerName = "localhost"
)
qwinsta /server:$ComputerName |
#Parse output
ForEach-Object {
$_.Trim() -replace "\s+",","
} |
#Convert to objects
ConvertFrom-Csv
}
Get-TSSessions -ComputerName "localhost" | ft -AutoSize
SESSIONNAME USERNAME ID STATE TYPE DEVICE
----------- -------- -- ----- ---- ------
services 0 Disc
console Frode 1 Active
rdp-tcp 65537 Listen
#This is objects, so we can manipulate the results to get the info we want. Active sessions only:
Get-TSSessions -ComputerName "localhost" | ? { $_.State -eq 'Active' } | ft -AutoSize SessionName, UserName, ID
SESSIONNAME USERNAME ID
----------- -------- --
console Frode 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14096 次 |
最近记录: |