非英语系统中通用New-SMBShare命令的实现方法咨询
完全理解你的痛点——本地化系统里用英文组名确实会踩这个坑。要写出跨所有语言版本Windows系统的通用命令,核心思路是使用安全标识符(SID)代替本地化的组名,因为SID是Windows系统内部统一的身份标识,不会随系统语言变化。
具体解决命令
直接用Everyone对应的SID S-1-1-0 代替Everyone(西语里的Todos),命令如下:
New-SMBShare -Name 'scripts$' -Path 'c:\scripts' -ChangeAccess 'S-1-1-0'
为什么这能生效?
Windows里的"Everyone"是一个Well-Known安全主体,它的SID是固定的S-1-1-0,不管系统是西班牙语、中文还是其他语言,这个SID对应的都是所有用户的集合。本地化的组名(比如西语的Todos、中文的“所有人”)只是这个SID的显示名称,系统底层实际识别的是SID。
扩展:其他常用Well-Known SID
如果你需要给其他常见组设置权限,也可以用对应的SID来避免语言问题,比如:
- 已认证用户(Authenticated Users):
S-1-5-11 - 本地管理员(Administrators):
S-1-5-32-544
这样写出来的命令,不管在哪个语言版本的Windows系统上执行,都不会出现账户名和SID不匹配的错误。
内容的提问来源于stack exchange,提问作者Andrzej Usatenko
相关产品推荐
相关产品推荐

