如何仅列出已启用的本地管理员

How to list only enabled local administrators

提问人:Darren 提问时间:4/20/2022 更新时间:4/20/2022 访问量:1546

问:

尝试仅列出在 Windows 工作站上启用的本地管理员帐户。

到目前为止有此代码,但我在尝试比较活动用户是否为管理员时遇到了超出这一点的问题。

$enabledUsers = (Get-LocalUser | Select * | sort Name, FullName, Enabled) | where-object enabled -eq $true

$enabledUsers | Select Name, Fullname
Windows PowerShell 管理员 管理

评论


答:

0赞 Santiago Squarzon 4/20/2022 #1

可用于获取组的所有成员,但此 cmdlet 不会告诉我们返回的用户是否已启用,我们可以将每个用户的 SID 传递给这些已启用的用户并筛选这些已启用的用户:Get-LocalGroupMemberAdministratorsGet-LocalUser

Get-LocalGroupMember Administrators | Where-Object { (Get-LocalUser $_.SID -EA 0).Enabled }

-EA 0 (-ErrorAction SilentlyContinue) 在此示例中使用,因为组的成员可能不是 User 类,在这种情况下,cmdlet 将引发错误(我们希望避免)。

如果你需要对象而不是对象,你可以改用它:LocalUserLocalPrincipal

Get-LocalGroupMember Administrators | ForEach-Object {
    if(($usr = Get-LocalUser $_.SID -EA 0) -and $usr.Enabled) {
        $usr | Select-Object Name, FullName
    }
}
0赞 mallockey 4/20/2022 #2
Get-LocalGroupMember Adminstrators | Where-Object {$_.PrincipalSource -ne "ActiveDirectory"} | select sid | ForEach-Object {
        Get-LocalUser $_.sid | Where-Object {$_.Enabled -eq $True } | select name, enabled
}
    

如果您还需要筛选出 AD 管理员