在我处理another问题时,我发现我需要获取NT AUTHORITY\Network Service
帐户的本地化帐户名称(&¤% @ localises帐户名)。
我有一个解决方法,涉及运行一些VBScript代码,但由于我的项目的其余部分是在Powershell中,我认为将此代码转换为Powershell是“正确的”(所以我不需要从我的Powershell调用VBScript,我不知道该怎么办......)。
知道这是做什么的,以及在Powershell中如何做到这一点?
Set objWMI = GetObject ("winmgmts:root\cimv2")
Set objSid = objWMI.Get ("Win32_SID.SID='S-1-5-20'")
Set MyDomain = objSid.ReferencedDomainName
Set MyAccount = objSid.AccountName
答案 0 :(得分:1)
这样的事情可以解决问题;
$objSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-20")
$objAccount = $objSID.Translate([System.Security.Principal.NTAccount])
$objAccount.Value
输出:
NT AUTHORITY\NETWORK SERVICE
如果你想要更多的控制,你可以坚持使用WMI方法并做这样的事情;
$acc = ([wmi]"Win32_SID.SID='S-1-5-20'")
$name = $acc.AccountName
$domain = $acc.ReferencedDomainName
$domain
$name
"{0}\{1}" -f $domain, $name
输出:
NT AUTHORITY NETWORK SERVICE NT AUTHORITY\NETWORK SERVICE
这样,您现在可以将构成NT帐户名称的两个组件与上述脚本分开。
此方法可能与原始示例最接近。