使用网络用户多语言语言
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"
我正在设置一堆计算机,为此我正在使用 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"