使用网络用户多语言语言

using net user multilanguage language

我正在设置一堆计算机,为此我正在使用 powershell。
要设置管理员帐户,我使用了 net 命令,但是当我得到一些丹麦语 OS 和一些英语的电脑时,命令略有不同。

丹麦语版本:
net localgroup Administratorer username /add

英文版:
net localgroup Administrators username /add

这意味着我需要两个版本的脚本。是否可以采取另一种方法?也许使用一些 ID 来识别管理员组?比如写 3334 而不是 administrator

内置的 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

一种解决方案可能是利用 .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]

从那时起,您可以在调用 net localgroup

时使用 $adminsName
net localgroup $adminsname /add <user>

如果你想运行它作为一个没有内容文件夹的 SCCM 包

%windir%\Sysnative\windowsPowershell\V1.0\powershell -command "$an='AdminUser';$ap='password'; net user /add $an $ap; $agn = (gwmi -Class Win32_Group -Filter 'LocalAccount=True AND SID="""S-1-5-32-544"""').Name;net localgroup $agn $an /add"