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

ADSI Edit中SID归属查询及PowerShell转换方法咨询

SID 转换与账户添加问题解决

一、查询SID对应的所属对象

  • 本地SID:
    用PowerShell查询本地用户/组:
    # 查询本地用户
    Get-LocalUser | Where-Object {$_.SID -eq "你的SID"}
    # 查询本地组
    Get-LocalGroup | Where-Object {$_.SID -eq "你的SID"}
    
    或者通过WMI查询:
    Get-WmiObject Win32_SID -Filter "SID='你的SID'"
    
  • 域SID:
    先确保成员服务器安装了RSAT-AD-PowerShell模块,然后执行:
    Get-ADUser -Identity "你的SID"
    # 如果是组,替换为Get-ADGroup
    Get-ADGroup -Identity "你的SID"
    
    也可以直接转成账户名快速确认:
    ([System.Security.Principal.SecurityIdentifier]"你的SID").Translate([System.Security.Principal.NTAccount]).Value
    

二、PowerShell完成SID转换

1. SID转账户名

直接用.NET类完成转换,支持本地/域对象:

$targetSID = "S-1-5-21-xxxxxx-xxxxxx-xxxxxx-1001"
$accountName = ([System.Security.Principal.SecurityIdentifier]$targetSID).Translate([System.Security.Principal.NTAccount]).Value
$accountName # 输出格式为「域\用户名」或「计算机名\用户名」

2. 账户名转SID(反向转换)

如果需要从账户名得到SID:

$targetAccount = "CORP\JohnDoe"
$sidValue = ([System.Security.Principal.NTAccount]$targetAccount).Translate([System.Security.Principal.SecurityIdentifier]).Value
$sidValue

三、成员服务器添加账户到角色的解决方案

如果直接用SID无法执行添加操作,先把SID转成账户名再操作,以添加到本地管理员组为例:

# 1. 转换SID为账户名
$sid = "S-1-5-21-xxxxxx-xxxxxx-xxxxxx-1001"
$account = ([System.Security.Principal.SecurityIdentifier]$sid).Translate([System.Security.Principal.NTAccount]).Value

# 2. 添加到目标角色/组
Add-LocalGroupMember -Group "Administrators" -Member $account

替代方案(适用于低版本PowerShell)

如果Add-LocalGroupMember不可用,用CMD命令替代:

net localgroup Administrators $account /add

注意事项

  • 域账户操作时,成员服务器必须能正常连接域控,确保网络、DNS解析正常
  • 若SID无法解析,检查该AD对象是否已被删除,或者当前账号是否有查询域对象的权限
  • 本地操作需要管理员权限运行PowerShell

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:07:26