我有一个小脚本,可以帮助我们环境中的用户屏蔽设施中其他用户的 session (我在公司办公室工作,公司用户需要能够屏蔽其他站点上其他用户的 session )
所以我有这个:
$servers = "server1, server2, server3, server4, server5"
#search for user in servers farm
foreach ($server in $servers) {
$results = & qwinsta.exe $userid /server:$server
if ($results -ne $null) {
write-host "User found in $server"
$serverfound = $server
write-host $results[1]
$sessionid = $results[1] | Where-Object { $_ -is 0..99}
write-host "Session ID is: $sessionid"
}
}
但是,我无法从结果中获取 session ID,这是脚本的输出:
Please wait while we search for x2adm on the RDSfarm Servers
User found in server5
rdp-tcp#0 x2adm 2 Active
Session ID is:
我试图简单地获取输出中的数字并将其分配给$ sessionid,以便使阴影过程完全自动化。
任何帮助将不胜感激。提前致谢。
最佳答案
我建议您改用ConvertFrom-String
。解析这样的数据真是太棒了。
ConvertFrom-String $results[1]
P1 :
P2 : console
P3 : Stephen
P4 : 1
P5 : Active
P6 :
因此,我们的
$SessionID
值将在p4中找到(P#只是此cmdlet为其找到的字符串赋予的任意名称)。完整的命令是
$sessionID = convertfrom-string $results[1] | select -expand P4
这将与您当前的代码一起使用,而无需进一步修改。
关于powershell - powershell-从阵列问题中获取特定信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38126779/