You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中不受系统区域设置影响选择本地组

如何在PowerShell中不受系统区域设置影响选择本地组

确实,这个问题在多语言环境写PowerShell脚本时特别头疼——依赖组名的话,换个德语系统,Users就变成Benutzer,脚本直接失效,完全没法通用!别担心,有两个靠谱的方法能解决这个问题,核心思路就是避开本地化的组名,用固定不变的标识符来定位组。

方法一:直接使用内置组的固定SID

Windows的内置本地组都有固定的安全标识符(SID),这个值不会随系统语言变化。比如:

  • 普通用户组(Users)的SID是 S-1-5-32-545
  • 管理员组(Administrators)的SID是 S-1-5-32-544
  • 来宾组(Guests)的SID是 S-1-5-32-546

你可以直接通过SID筛选组,示例代码如下:

# 获取通用的Users组,不受语言影响
Get-LocalGroup | Where-Object { $_.SID -eq 'S-1-5-32-545' }

这种方法简单直接,只要记住对应组的SID就行,适合快速写脚本。

方法二:用.NET枚举类获取内置组SID(更优雅)

如果不想记冗长的SID字符串,可以用.NET的WellKnownSidType枚举类,它内置了所有常见内置组的类型定义,代码可读性更高:

# 创建Users组的SID对象
$usersGroupSid = New-Object System.Security.Principal.SecurityIdentifier(
    [System.Security.Principal.WellKnownSidType]::BuiltinUsersSid,
    $null
)

# 通过SID筛选出目标组
Get-LocalGroup | Where-Object { $_.SID -eq $usersGroupSid }

类似的,你可以把BuiltinUsersSid换成其他枚举值,比如BuiltinAdministratorsSid(管理员组)、BuiltinGuestsSid(来宾组)等,全程不用碰本地化的组名,完美适配任何语言的系统。

额外提醒

如果是你自己创建的自定义本地组,没有固定的SID,但如果需要跨语言环境通用,建议:

  1. 创建组时统一使用英文名称(或非本地化的名称)
  2. 或者在脚本中提前存储好该组的SID,用SID来定位

这样就能彻底避免因系统语言差异导致的脚本崩溃问题啦!

备注:内容来源于stack exchange,提问作者MaKaNu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:48:12