我需要在我的系统上获得所有本地用户的明文列表或数组,以便我可以遍历它们并执行某些操作。通过"明文"我只是指用户的名字。没有其他的。没有花哨的格式,没有标题,没有组,只有用户的名字。
我已经用Google搜索并尝试了几种解决方案(例如,这一个powershell - list local users and their groups),但它们都有无关的数据,这使得无法通过用户进行循环。
我有什么方法可以得到一个简单的用户列表吗?如果你拥有的话,我不会介意cmd解决方案。请注意,我已经尝试了net users
,但正如我之前所说,它有这些无关的数据。
答案 0 :(得分:1)
的VBScript:
Dim ADsContainer, User
Set ADsContainer = GetObject("WinNT://.,Computer")
ADsContainer.Filter = Array("User")
For Each User In ADsContainer
WScript.Echo User.Name
Next
将上面的行粘贴到GetLocalUsers.vbs中并像这样运行:
cscript //nologo GetLocalUsers.vbs
如果要直接在PowerShell中使用WMI,可以使用:
get-wmiobject Win32_UserAccount -filter 'LocalAccount=TRUE' |
select-object -expandproperty Name
答案 1 :(得分:1)
经过一些实验,阅读等,我找到了一个相当简单的解决方案:
$accounts = Get-WmiObject -Class Win32_UserAccount | Select name
返回:
name
----
Administrator
Guest
John Doe
Other User
不是我想要的,但如果我像这样循环:
foreach ($i in $accounts) { Write-host $i.name }
打印:
Administrator
Guest
John Doe
Other User
这很麻烦,所以我把它简化为一个循环:
foreach ($i in Get-WmiObject -Class Win32_UserAccount | Select name) {
# refer to the looped user as $i.name now
}
根据Bill_Stewart的评论,按本地帐户过滤是个好主意:
foreach ($i in Get-WmiObject -Class Win32_UserAccount -filter 'LocalAccount=true' | Select name) {
# refer to the looped user as $i.name now
}
仍然不太理想,但现在它符合我的需要。
答案 2 :(得分:1)
你必须像这样写它,以便按照你的要求进行格式化:
Get-WmiObject -Class Win32_UserAccount | Format-wide -property name -column 1
打印:
Administrator
Guest
and so on..