如何在PowerShell中获取我的系统上的本地用户的明文列表/数组?

时间:2014-07-24 01:43:24

标签: powershell cmd

我需要在我的系统上获得所有本地用户的明文列表或数组,以便我可以遍历它们并执行某些操作。通过"明文"我只是指用户的名字。没有其他的。没有花哨的格式,没有标题,没有组,只有用户的名字。

我已经用Google搜索并尝试了几种解决方案(例如,这一个powershell - list local users and their groups),但它们都有无关的数据,这使得无法通过用户进行循环。

我有什么方法可以得到一个简单的用户列表吗?如果你拥有的话,我不会介意cmd解决方案。请注意,我已经尝试了net users,但正如我之前所说,它有这些无关的数据。

3 个答案:

答案 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..