如何查询 SID 及根据 SID 反查对应的账户 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1 PsGetSid
   PsGetSid PsTools 工具集中,由 sysinternals 发布,目前的最新版本是 2.44 。个人感觉 sysinternals 的工具功能非常强大也非常好用,如果用好这些工具工作效率大为提高。
下载地址: http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx

下面是使用 psgetsid 查询 sid 实例
C:\Documents and Settings\psyadmin>psgetsid /?

查询本机 sid
C:\Documents and Settings\psyadmin>psgetsid

 

查询 SID 对应的主机名
C:\Documents and Settings\psyadmin>psgetsid S-1-5-21-1665000383-1530267105-35274
31458

 

查询网络主机 SID
C:\Documents and Settings\psyadmin>psgetsid \\192.168.0.78 -u psyadmin

PsGetSid v1.43 - Translates SIDs to names and vice versa
Copyright (C) 1999-2006 Mark Russinovich
Sysinternals -
www.sysinternals.com


Password:
SID for \\192.168.0.78:
S-1-5-21-1214440339-2139871995-839522115


对方主机防火墙关闭文件和打印机共享,不能连接 135 端口导致找不到网络路径
C:\Documents and Settings\psyadmin>psgetsid \\192.168.0.76 -u psyadmin

PsGetSid v1.43 - Translates SIDs to names and vice versa
Copyright (C) 1999-2006 Mark Russinovich
Sysinternals -
www.sysinternals.com

Password:
Couldn't access 192.168.0.76:
找不到网络路径。

Make sure that the default admin$ share is enabled on 192.168.0.76.

查询本地用户 SID
C:\Documents and Settings\psyadmin>psgetsid admin

PsGetSid v1.43 - Translates SIDs to names and vice versa
Copyright (C) 1999-2006 Mark Russinovich
Sysinternals -
www.sysinternals.com


SID for BEACON\admin:
S-1-5-21-1665000383-1530267105-3527431458-1625

2whoami

使用whoami查询
C:\Documents and Settings\Administrator>whoami /all

3
dsget user
  在域控制器上可以用dsget user查看用户的属性信息,但是dsget user需要写全ldap路径,个人比较懒还是用图形界面看比较方便,呵呵。通过dsget user查询到的SIDpsgetsidacctinfo查询到的一致。
C:\Documents and Settings\psyadmin>dsget user "CN=admin,OU=domainadmins,DC=beacon,DC=local" -sid
  sid
  S-1-5-21-1665000383-1530267105-3527431458-1625
dsget
成功

4
、使用脚本查询SID
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objAccount = objWMIService.Get _
    ("Win32_UserAccount.Name='administrator',Domain='pc0406-09'")
Wscript.Echo objAccount.SID
'("Win32_UserAccount.Name='admin',Domain='beacon'")--
查看域 beacon.com 用户 admin SID 号,该 script 只能在 beacon.com 域内主机上运行。
'("Win32_UserAccount.Name='administrator',Domain='pc0406-09'")--
查看工作组环境下主机 pc0406-09 上用户 administrator SID 号。

 

5 、使用脚本根据SID查询对应的账户

strComputer = "."

 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

 

 Set objAccount = objWMIService.Get("Win32_SID.SID='S-1-5-21-2745346487-1701105897-3911078134-1583'")

 

Wscript.Echo objAccount.AccountName

 

Wscript.Echo objAccount.ReferencedDomainName