通过命令行列出 Windows 系统上的所有用户帐户

pal*_*wim 7 windows user-accounts command-line

我想要一个命令来列出 Windows(Vista、7 等)系统中的所有用户帐户,以便我可以使用后续命令遍历它们。

net user 给了我我正在搜索的数据,但它添加了一堆其他垃圾,这些垃圾会导致解析用户的困难。

理想情况下,我会收到如下输出:

> usercommand
user1
user2
user3
Run Code Online (Sandbox Code Playgroud)

tru*_*ype 11

对于在这里只是寻找一种在命令行中列出您机器上的所有用户并且不需要循环的方法的任何人。只需运行此命令:

net user
Run Code Online (Sandbox Code Playgroud)

它将以这种格式输出您需要的内容

-------------------------------------
User1    User2    User3    User4
The command completed successfully.
Run Code Online (Sandbox Code Playgroud)

  • 此信息已在问题中。 (2认同)

Bob*_*Bob 8

如果您想在 Windows 命令行中严格遍历用户,最简单的方法是组合wmicfor循环。

for /f "tokens=* skip=1" %%a in ('wmic UserAccount get Name') do (
    if not "%%a"=="" (
        :: %%a is a variable containing an account name
    )
)
Run Code Online (Sandbox Code Playgroud)

该命令的核心是wmic UserAccount get Name,它应该打印出一个帐户列表。您可能希望进行一些过滤,就像 Karan 在他的 VBScript 答案中所做的那样,使用类似wmic UserAccount where "LocalAccount=True" get Name. 任何字段都是可过滤的;要查看所有这些,请使用wmic UserAccount get(省略Name)。

for循环仅用于解析命令输出。它跳过第一行(打印列标题),最后一行被if命令跳过,因为它是空的。有关for /?更多信息,请参阅。

  • 请注意,如果您在域中(至少在 Samba 域中,不了解 Windows AD),`wmic` 还将列出所有可能不是您想要的域帐户,并且还需要相当长的时间。`wmic useraccount where "localaccount=true" get name` 阻止了这种情况。 (2认同)