2016-09-09 44 views
0

我设置了一堆计算机,为此我使用的是PowerShell。
要设置管理员帐户,我使用了net命令,但是因为我使用丹麦语操作系统获得了一些PC,而使用英语的命令略有不同。使用网络用户多语言语言

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

英文版:
net localgroup Administrators username /add

这意味着我需要的脚本的两个版本。是否有可能采取另一种方式?也许使用一些ID来标识管理员组?就像写3334来代替administator

回答

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 
+0

感谢时,既可以使用$adminsName,似乎工作:) – Bok

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] 

从此,你可以调用net localgroup

net localgroup $adminsname /add <user> 
+0

感谢您的回答:)我选择马蒂亚斯一个更oneliner的解决方案,但无论如何谢谢你! – Bok