Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从PowerShell/CMD中的会话查询导入数字_Python_Powershell_Import_Scripting_Rdp - Fatal编程技术网

Python 如何从PowerShell/CMD中的会话查询导入数字

Python 如何从PowerShell/CMD中的会话查询导入数字,python,powershell,import,scripting,rdp,Python,Powershell,Import,Scripting,Rdp,我正在尝试创建一个PowerShell脚本,该脚本允许我查询用户会话并在RDP中对所述会话进行阴影处理。我想从qwinsta中提取活动会话,但是,如果我为插入的域输入凭据,则只能提取结果。下面是我在PowerShell中的一个示例: runas/user:DOMAIN\user“cmd/k qwinsta/server:192.168.255.2” 将输出 SESSIONNAME用户名ID状态 服务0光盘 控制台jdoe 2激活 rdp tcp 65536侦听 这将调出cmd并允许我查看查询的输

我正在尝试创建一个PowerShell脚本,该脚本允许我查询用户会话并在RDP中对所述会话进行阴影处理。我想从
qwinsta
中提取活动会话,但是,如果我为插入的域输入凭据,则只能提取结果。下面是我在PowerShell中的一个示例:

runas/user:DOMAIN\user“cmd/k qwinsta/server:192.168.255.2”

将输出

SESSIONNAME用户名ID状态

服务0光盘

控制台jdoe 2激活

rdp tcp 65536侦听

这将调出cmd并允许我查看查询的输出。然而,我不想每次都这样做,因为这很乏味。我对PowerShell非常陌生,因此请原谅我的无知,但是我如何才能提取jdoe的ID号(在本例中为数字2),以变量/字符串的形式将其导入PowerShell,例如
$activeSession=
,然后像这样运行脚本

Mstsc/shadow:$activeSession/v:192.168.255.2/control/NoConsentPrompt/prompt


感谢您的帮助

如果您想要
活动
会话的
ID
,可以执行以下操作:

runas /user:DOMAIN\USER "cmd /a /c qwinsta /server:192.168.255.2 > c:\temp\sessions.txt"
$activeSession = (Get-Content c:\temp\sessions.txt) -match '\b\d+\s+Active\b' -replace '\D'
cmd qwinsta
命令将输出到文件
sessions.txt
。然后可以使用
Get Content
读取文件并解析所需的数据

-match
-replace
使用正则表达式匹配字符串<代码>\b是单词边界<代码>\d+是一个或多个数字<代码>\D是任何非数字。由于
-replace
没有替换字符串,因此将删除任何匹配的字符


更强大的PowerShell解决方案可以利用:


这需要进行配置。

如果您想要
活动
会话的
ID
,可以执行以下操作:

runas /user:DOMAIN\USER "cmd /a /c qwinsta /server:192.168.255.2 > c:\temp\sessions.txt"
$activeSession = (Get-Content c:\temp\sessions.txt) -match '\b\d+\s+Active\b' -replace '\D'
cmd qwinsta
命令将输出到文件
sessions.txt
。然后可以使用
Get Content
读取文件并解析所需的数据

-match
-replace
使用正则表达式匹配字符串<代码>\b是单词边界<代码>\d+是一个或多个数字<代码>\D是任何非数字。由于
-replace
没有替换字符串,因此将删除任何匹配的字符


更强大的PowerShell解决方案可以利用:


这需要进行配置。

您可以执行
(qwinsta)-match'\b\d+\s+Active\b'-replace'\d'
。您可以执行
(qwinsta)-match'\b\d+\s+Active\b'-replace'\d'
。谢天谢地,我意识到我的设备启用了本地管理员,powershell没有因此而拿走我的域信任。Qwinsta现在可以在powershell中使用了,我从PoSh Wolf那里获得了一个名为Get-ActiveSessions的函数;我离我想要的结果更近了。如果你愿意,你可以查看我个人资料上的新帖子。谢谢你的帮助!谢天谢地,我意识到我的设备启用了本地管理员,因此powershell并没有拿走我的域凭据。Qwinsta现在可以在powershell中使用了,我从PoSh Wolf那里获得了一个名为Get-ActiveSessions的函数;我离我想要的结果更近了。如果你愿意,你可以查看我个人资料上的新帖子。谢谢你的帮助!