You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何校验远程CimSession所用凭据是否具备远程计算机管理员权限

你可以通过已有的CimSession直接完成管理员权限校验,无需额外建立其他远程连接,以下是两种常用的实现方案:

方案1:校验当前凭据所属用户是否在远程计算机管理员组

该方案通过查询远程本地管理员组的成员列表,匹配当前CimSession使用的凭据身份:

# 替换为你已创建的CimSession实例变量
$cimSession = <你的CimSession对象>

# 获取当前会话使用的用户名
$currentLogin = $cimSession.Credential.UserName
# 查询远程本地管理员组
$remoteAdminGroup = Get-CimInstance -ClassName Win32_Group -Filter "Name='Administrators' AND LocalAccount='True'" -CimSession $cimSession
# 拉取管理员组所有成员
$adminMembers = Get-CimAssociatedInstance -InputObject $remoteAdminGroup -ResultClassName Win32_UserAccount -CimSession $cimSession | Select-Object -ExpandProperty Caption

if ($adminMembers -contains $currentLogin) {
    Write-Host "当前凭据属于远程管理员组"
} else {
    Write-Host "当前凭据不属于远程管理员组"
}

方案2:通过权限敏感操作校验真实权限

该方案更贴合实际使用场景,可绕过UAC远程令牌过滤的干扰,直接校验当前会话是否真的持有管理员权限:

# 替换为你已创建的CimSession实例变量
$cimSession = <你的CimSession对象>

try {
    # 调用仅管理员可访问的StdRegProv类读取HKLM下的SAM注册表项
    $regProvider = Get-CimInstance -Namespace root/default -ClassName StdRegProv -CimSession $cimSession -ErrorAction Stop
    $operResult = $regProvider.EnumKey(2147483650, "SAM") # 2147483650为HKLM根键的常量值
    if ($operResult.ReturnValue -eq 0) {
        Write-Host "当前凭据持有远程计算机管理员权限"
    } else {
        Write-Host "当前凭据无远程计算机管理员权限"
    }
} catch {
    Write-Host "当前凭据无远程计算机管理员权限,操作被拒绝"
}

两种方案可根据你的使用场景选择:如果仅需要判断用户身份归属选方案1,需要校验实际生效的权限选方案2。

内容的提问来源于stack exchange,提问作者Gurax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:45:07