我想要一个命令来列出 Windows(Vista、7 等)系统中的所有用户帐户,以便我可以使用后续命令来遍历它们。
net user
给了我所搜索的数据,但它添加了一些其他垃圾,这会导致解析用户的困难。
理想情况下,我会收到如下输出:
> usercommand
user1
user2
user3
答案1
如果您想严格在 Windows 命令行中迭代用户,最简单的方法就是wmic
和for
循环的组合。
for /f "tokens=* skip=1" %%a in ('wmic UserAccount get Name') do (
if not "%%a"=="" (
:: %%a is a variable containing an account name
)
)
该命令的核心是wmic UserAccount get Name
,它应该打印出一个帐户列表。您可能希望进行一些过滤,就像 Karan 在他的 VBScript 答案中所做的那样,使用类似 的内容wmic UserAccount where "LocalAccount=True" get Name
。任何字段都是可过滤的;要查看所有字段,请使用wmic UserAccount get
(省略Name
)。
循环for
仅用于解析命令输出。它会跳过第一行(打印列标题),并且会跳过最后一行if
,因为它是空的。for /?
有关详细信息,请参阅。
答案2
如果您正在寻找一种方法来在命令行中列出计算机上的所有用户,并且不需要循环,只需运行此命令:
net user
它将以这种格式输出你需要的内容
-------------------------------------
User1 User2 User3 User4
The command completed successfully.
答案3
这Windows PowerShell脚本将以表格形式提供用户列表,这并不完全是您想要的,但将输出重新格式化为可以用于输入另一个命令的格式应该不会太难。
$computerName = "$env:computername"
$computer = [ADSI]"WinNT://$computerName,computer"
$computer.psbase.Children | Where-Object { $_.psbase.schemaclassname -eq 'user' } | Format-Table Name, Description -autoSize
答案4
这将输出您所要求的内容:
dir /b C:\用户