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

[玩转系统] Powershell:查找内置本地管理员帐户

作者:精品下载站 日期:2024-12-14 07:16:22 浏览:13 分类:玩电脑

Powershell:查找内置本地管理员帐户


在本地计算机(服务器的客户端)上管理帐户在域环境中并不常见,但有一个帐户经常被讨论——本地管理员。

一些公司在计算机上禁用此帐户,一些公司将其密码设置为标准密码,一些公司在部署时随机化密码并在数据库或类似数据库中跟踪它们。问题是,有时,在故障排除场景中,手头有服务器上的本地管理员帐户的密码确实很方便,但跟踪在哪台服务器上使用哪个密码可能很棘手。

一些公司使用操作系统的本地化版本,这意味着本地管理员帐户并不总是命名为 Administrator,它可能是 Järjestelmänvalvoja、Administrateur、Rendszergazda、Administrador、Администратор、Administrador 或 Administratör,有些公司将本地管理员帐户重命名为完全不同的名称。

那么我们如何获取机器上本地管理员帐户的名称呢?

每个帐户都有一个称为安全标识符 (SID) 的唯一标识符。我不会深入探讨 SID 是如何生成的,但一些帐户的 SID 始终与特定模式匹配。这些 SID 称为众所周知的安全标识符。

管理员帐户是唯一一个 SID 以“-500”结尾的帐户。利用这些知识,我在 powershell 中编写了一个简单的函数,它将列出计算机上的所有本地用户,并返回 SID 以“-500”结尾的帐户名称。

function Get-SWLocalAdmin {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        $ComputerName
    )
    Process {
        Foreach ($Computer in $ComputerName) {
            Try {
                Add-Type -AssemblyName System.DirectoryServices.AccountManagement
                $PrincipalContext = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine, $Computer)
                $UserPrincipal = New-Object System.DirectoryServices.AccountManagement.UserPrincipal($PrincipalContext)
                $Searcher = New-Object System.DirectoryServices.AccountManagement.PrincipalSearcher
                $Searcher.QueryFilter = $UserPrincipal
                $Searcher.FindAll() | Where-Object {$_.Sid -Like "*-500"}
            }
            Catch {
                Write-Warning -Message "$($_.Exception.Message)"
            }
        }
    }
}

在以后的文章中,我将介绍如何确定上次设置密码的时间、如何更改密码以及如何验证密码设置是否正确。

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

取消回复欢迎 发表评论:

关灯