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

如何不受系统语言设置影响移除本地组中的用户成员?

解决多语言系统中移除本地用户组成员的问题

原代码依赖英文组名"Users",在非英文系统中因组名本地化而失效。你尝试的枚举多语言组名的方法只能覆盖有限语言场景,更可靠的方案是利用内置用户组的固定SID(SID不会随系统语言改变)来定位目标组,以下是具体实现:

最优方案:基于SID定位内置用户组

内置本地用户组的SID是固定的S-1-5-32-545,通过这个SID可以精准找到目标组,完全不受系统语言影响:

$memberName = "RAdmin"
# 内置用户组的固定SID
$targetGroup = Get-LocalGroup | Where-Object { $_.SID -eq "S-1-5-32-545" }

if ($targetGroup) {
    try {
        Remove-LocalGroupMember -Group $targetGroup -Member $memberName -ErrorAction Stop
        Write-Host "成功将 $memberName 从内置用户组中移除"
    }
    catch {
        Write-Host "移除操作失败:$_"
    }
}
else {
    Write-Host "未找到内置用户组"
}

备选方案:扩展多语言组名列表(非最优)

如果坚持使用组名枚举的方式,可以扩展列表覆盖更多语言,但这种方法无法覆盖所有语言场景,仅作为临时补充:

$memberName = "RAdmin"
# 扩展包含更多主流语言的组名
$groupNames = @("Users", "Benutzer", "Usuarios", "Utilisateurs", "ユーザー", "用户")

foreach ($groupName in $groupNames) {
    $group = Get-LocalGroup -Name $groupName -ErrorAction SilentlyContinue
    if ($group) {
        try {
            Remove-LocalGroupMember -Group $group -Member $memberName -ErrorAction Stop
            Write-Host "成功将 $memberName 从 '$groupName' 组移除"
        }
        catch {
            Write-Host "从 '$groupName' 移除 $memberName 失败:$_"
        }
    }
}

方案说明

  • 基于SID的方法是通用解决方案,适用于任何语言的Windows系统,因为内置安全组的SID是系统级固定标识,不会随本地化修改。
  • 枚举组名的方法仅能覆盖你预先列出的语言,遇到未包含的语言版本仍会失效,因此不推荐作为长期方案。

内容的提问来源于stack exchange,提问作者Robert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:37:49