我在SO上找到了这个片段:
从登录 ID 获取用户 SID(Windows XP 及更高版本)
Function GetSIDfromAcctName()
{
$myacct = Get-WmiObject Win32_UserAccount -filter "Name = '$env:USERNAME "
write-host Name: $myacct.name
Write-Host SID : $myacct.sid
}
但它并没有显示一切。
例如,我只想要“nt service\dhcp”的sid。 我怎样才能得到它? 当我手动运行 powershell 时
获取WmiObject Win32_UserAccont
我获得了所有用户,但只有三个“常规”用户。 没有一个“特殊”nt服务用户。
感谢您的帮助。
要获取内置帐户,您需要另一个 WMI 类:
Win32_Account
。
Get-WMIObject -Class 'Win32_Account' -Filter 'name="LOCAL SERVICE"'
如果您想知道启动服务的帐户名称,您可以使用:
gwmi Win32_service -Filter "name='dhcp'" | % {return $_.startname}
结果是
"NT Authority\LocalService"
,这是众所周知的 SID,如默认 Windows NT 安装的 SID 值中所述,您可以在 Windows 操作系统中的众所周知的安全标识符中找到更多 SID。
编辑: 正如您在下面的屏幕截图中看到的,是的,dhcp 客户端正在以
"NT Authority\LocalService"
启动的会话中运行