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

How to list only enabled local administrators

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

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

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

$enabledUsers | Select Name, Fullname

您可以使用 Get-LocalGroupMember 获取 Administrators 组的所有成员,但是此 cmdlet 不会告诉我们返回的用户是否已启用,我们可以将每个用户的 SID 传递给Get-LocalUser 并过滤那些启用的:

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

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

如果您需要 LocalUser 个对象而不是 LocalPrincipal 个对象,您可以使用它:

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

如果您还需要过滤掉 AD 管理员