我正在设置一堆计算机,为此我使用的是powershell 为了设置管理员帐户,我使用了net命令,但是当我得到一些带有丹麦语操作系统的PC和一些带有英语的命令时,命令略有不同。
丹麦语版本:
net localgroup Administratorer username /add
英文版:
net localgroup Administrators username /add
这意味着我需要两个版本的脚本。是否有可能采取另一种方法?也许使用一些ID来识别管理员组?比如写3334而不是管理员
答案 0 :(得分:2)
内置的Administrators组可能确实具有不同的名称,具体取决于安装语言,但组的安全标识符始终相同:
S-1-5-32-544
要查找本地名称,请使用WMI:
$AdminGroupName = (Get-WmiObject -Class Win32_Group -Filter 'LocalAccount = True AND SID = "S-1-5-32-544"').Name
现在你可以做到:
net localgroup $AdminGroupName username /add
答案 1 :(得分:1)
一种解决方案可能是利用.NET框架(通过Powershell)来检索管理员组的本地化名称。我发现它比硬编码管理员组的SID更好,即使它永远不会改变。
$adminGroupSid = [System.Security.Principal.SecurityIdentifier]::new([System.Security.Principal.WellKnownSidType]::BuiltinAdministratorsSid,$null)
$adminGroupName = $adminGroupSid.Translate([System.Security.Principal.NTAccount]).ToString()
$adminsName = ($adminGroupName -split "\\")[1]
从那时起,您可以在调用$adminsName
net localgroup
net localgroup $adminsname /add <user>