擅长:python、mysql、java
<p>因为其他人已经回答了您的主要问题,覆盖了循环中的变量,所以我重写了它,使它只调用一次“tasklist”并解析输出,而不是对user\u list中的每个用户反复调用:</p>
<pre><code>import subprocess
import csv
user_list = ['Test']
domain='MyPC'
tasklist = subprocess.check_output("tasklist /V /FO CSV")
tasks = csv.DictReader(tasklist.splitlines(), dialect="excel")
users = set()
for task in tasks:
if task['User Name'] == 'N/A': continue
task_domain, task_user = task['User Name'].split('\\')
if domain == task_domain and task_user in user_list:
users.add(task_user)
print '\n'.join(users)
# return users
</code></pre>
<p>(考虑一下<a href="http://technet.microsoft.com/en-gb/sysinternals/bb897545.aspx" rel="nofollow">SysInternals' PsLoggedOn</a>,它可以通过注册表快速查询登录的用户,也可以在远程计算机上运行)。你知道吗</p>