问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PowerShell用户列表:如何在PowerShell中列出用户

创作时间:
作者:
@小白创作中心

PowerShell用户列表:如何在PowerShell中列出用户

引用
1
来源
1.
https://www.cdz423.com/post/37531.html

在Windows系统管理中,PowerShell是一个强大的工具,可以用来执行各种系统管理任务。本文将详细介绍如何使用PowerShell列出系统用户,包括本地用户和Active Directory用户。

PowerShell 用户列表的定义

PowerShell用户列表是一种从本地Windows计算机或Active Directory用户检索用户的方法,使用特定的cmdlet(例如Windows操作系统上的本地用户的Get-LocalUser和Active Directory用户的Get-ADUsers来检索用户详细信息,例如可分辨名称(DN)、GUID、安全标识符(SID)、安全账户管理器(SAM)或名称,并且可以导出到CSV或文本文件。

句法

PowerShell用户列表的语法如下:

获取本地用户语法:

Get-LocalUser
[[-Name] <String[]>]
[<CommonParameters>]
Get-LocalUser
[[-SID] <SecurityIdentifier[]>]
[<CommonParameters>]

获取ADUser语法:

Get-ADUser
[-AuthType <ADAuthType>]
[-Credential <PSCredential>]
-Filter <String>
[-Properties <String[]>]
[-ResultPageSize <Int32>]
[-ResultSetSize <Int32>]
[-SearchBase <String>]
[-SearchScope <ADSearchScope>]
[-Server <String>]
[<CommonParameters>]

Get-ADUser
[-AuthType <ADAuthType>]
[-Credential <PSCredential>]
[-Identity] <ADUser>
[-Partition <String>]
[-Properties <String[]>]
[-Server <String>]
[<CommonParameters>]

Get-ADUser
[-AuthType <ADAuthType>]
[-Credential <PSCredential>]
-LDAPFilter <String>
[-Properties <String[]>]
[-ResultPageSize <Int32>]
[-ResultSetSize <Int32>]
[-SearchBase <String>]
[-SearchScope <ADSearchScope>]
[-Server <String>]
[<CommonParameters>]

从Get-ADUser语法中,您可以使用任何组合集,对于Get-LocalUser帐户也是如此。您不能在Get-ADUser cmdlet中一起使用-Filter和-Identity属性,也不能在Get-LocalUser cmdlet中一起使用-Name和-SID属性。

我们还可以使用WMI或CIMInstance类Win32_UserAccount从本地或远程计算机检索本地用户详细信息。另外cmd中的“Net User”命令也有助于检索本地用户列表。

如何在PowerShell中列出用户?

有多种方法可以使用本机命令在PowerShell中列出用户,例如Get-LocalUser(从本地计算机或远程计算机检索本地用户帐户详细信息)或Get-ADUser(从Active Directory域检索用户)。

Get-LocalUser命令是在PowerShell 5.1中引入的,它是Microsoft.PowerShell.LocalAccounts模块的一部分。在早期的PowerShell版本中,要检索用户列表,您需要下载本地帐户模块,或者需要使用cmd命令,例如Net User(仍然有效)或WMI方法类Win32_UserAccount。

如果您要远程连接到较旧的PowerShell版本计算机,则Get-LocalUser命令将无法在那里工作。当您在域控制器上运行本地用户命令时,它将为您提供Active Directory用户,因为DC没有本地用户。

PowerShell用户列表示例

下面给出示例:

示例#1:使用Cmd获取本地用户帐户列表

我们可以使用“Net User”cmd命令从cmd或PowerShell中检索用户列表。

net user

输出:

  • 要从远程计算机获取本地用户列表,请使用PowerShell中的Invoke-Command,
Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock { net user}

输出:

以上输出来自远程计算机LabMachine2k16

示例#2:使用Wmi方法检索本地用户

我们可以使用WMI方法或CIM实例方法类Win32_UserAccount来检索用户列表。

gwmi win32_UserAccount | Select Name, FullName, Caption, Domain, SID | ft -AutoSize

输出:

  • 要获取远程计算机上的本地用户详细信息,您需要添加-ComputerName
Invoke-Command -ComputerName LabMachine2k16 { gwmi win32_UserAccount} | Select Name, FullName, Caption, Domain, SID | ft -AutoSize

您还可以使用Get-CimInstance命令代替gwmi方法。

您可以将输出文件导出为文本或CSV,如下所示。在下面的示例中,输出将导出到UserAccounts.Csv文件。

gwmi win32_UserAccount | Select Name, FullName, Caption, Domain, SID | Export-Csv C:\Temp\Useracccounts.csv -NoTypeInformation

导出到文本文件。

gwmi win32_UserAccount | Select Name, FullName, Caption, Domain, SID | Out-File C:\temp\UserAccounts.txt

如果您想查看特定用户或域用户列表,

gwmi win32_UserAccount | where{$_.Domain -like "LabMachine2k16*"} | Select Name, FullName, Caption, Domain, SID  | ft -AutoSize

输出:

  • 要仅使用密码属性检索本地帐户,请使用以下命令,
gwmi win32_useraccount | where{$_.LocalAccount -eq $true}  | Select Name, LocalAccount, PasswordChangeable, PasswordRequired

示例#3:检索ADUsers列表

要获取域用户列表,可以使用Get-ADUser命令。要运行此命令,您需要确保计算机上安装了RSAT(远程服务器管理工具)。

Get-ADUser -Filter *

上面的命令将从活动目录域中获取所有用户。

  • 要公开用户的所有属性,您可以使用-Property
Get-ADUser -Filter * -Properties *
  • 要过滤特定属性,
Get-ADUser -Filter * -Properties * | Select Name, DisplayName, SamAccountName, UserPrincipalName

输出:

  • 要获取帐户已禁用的用户列表并将其导出到CSV文件,请使用以下命令。
Get-ADUser -Filter * | where {$_.Enabled -eq $false} | Export-Csv C:\DisabledUserAccounts.csv -NoTypeInformation
  • 要获取特定用户帐户的详细信息,
Get-ADUser -Identity beta -Properties *

您需要在-Identity参数中使用SamAccountName属性。

  • 要从特定组织单位(OU)检索用户,请使用以下命令。
Get-ADUser -Filter * -Properties * | where{$_.DistinguishedName -like "*CN=Users*"} | Select Name, DisplayName, userPrincipalName, SAMAccountName
  • 使用输出中的密码属性检索Active Directory域中密码已过期或设置为永不过期的用户列表。
  • 检索过期密码用户帐户。
Get-ADUser -Filter * -Properties * | where{$_.PasswordExpired -eq $true} | Select Name, SAMAccountName, PasswordExpired, PasswordLastSet
  • 检索密码永不过期的用户帐户。
Get-ADUser -Filter * -Properties * | where{$_.PasswordNeverExpires -eq $true} | Select Name, SAMAccountName, PasswordNeverExpires

结论

如本文所述,PowerShell使用各种命令从Windows计算机或Active Directory域检索用户列表,这对于管理员的审核和清理任务很有帮助。您可以使用任务计划程序每月向管理员发送电子邮件以获取已创建、已过期、即将过期帐户的列表。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号