当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 用户列表 |如何在 PowerShell 中列出用户? (示例)

作者:精品下载站 日期:2024-12-14 04:48:38 浏览:14 分类:玩电脑

PowerShell 用户列表 |如何在 PowerShell 中列出用户? (示例)


[玩转系统] PowerShell 用户列表 |如何在 PowerShell 中列出用户? (示例)

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 用户列表 |如何在 PowerShell 中列出用户? (示例)

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

输出:

[玩转系统] PowerShell 用户列表 |如何在 PowerShell 中列出用户? (示例)

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

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

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

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

输出:

[玩转系统] PowerShell 用户列表 |如何在 PowerShell 中列出用户? (示例)

  • 要获取远程计算机上的本地用户详细信息,您需要添加 -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

输出:

[玩转系统] PowerShell 用户列表 |如何在 PowerShell 中列出用户? (示例)

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

示例 #3:检索 ADUsers 列表

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

Get-ADUser -Filter *

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

[玩转系统] PowerShell 用户列表 |如何在 PowerShell 中列出用户? (示例)

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

输出:

[玩转系统] PowerShell 用户列表 |如何在 PowerShell 中列出用户? (示例)

  • 要获取帐户已禁用的用户列表并将其导出到 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 域检索用户列表,这对于管理员的审核和清理任务很有帮助。 您可以使用任务计划程序每月向管理员发送电子邮件以获取已创建、已过期、即将过期帐户的列表。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯