PowerShell脚本添加Domain Users到本地Administrators组报错
解决方法
1. 修正批处理调用逻辑
如果是用批处理调用.ps1脚本,批处理里的命令要这么写:
powershell -ExecutionPolicy Bypass -File "C:\你的脚本路径\script.ps1"
要是直接在批处理里写这条PowerShell命令,得注意cmd的引号转义——要么把双引号改成两个双引号:
powershell -ExecutionPolicy Bypass -Command "Add-LocalGroupMember -Group ""Administrators"" -Member ""DOMAIN\Domain Users"""
要么用单引号把PowerShell命令整个包起来:
powershell -ExecutionPolicy Bypass -Command 'Add-LocalGroupMember -Group "Administrators" -Member "DOMAIN\Domain Users"'
2. 检查脚本编码
把你的.ps1脚本用记事本打开,重新保存时选UTF-8编码(别选ANSI)。要是脚本是ANSI编码,空格或者特殊字符可能被解析错误,直接导致组名截断。
3. 用SID替代组名(更可靠)
实在搞不定名称解析,直接用Domain Users的SID来添加。先在PowerShell里跑这条命令获取SID:
Get-ADGroup "Domain Users" | Select-Object SID
拿到类似S-1-5-21-xxxxxx-xxxxxx-xxxxxx-513的SID后,把命令改成:
Add-LocalGroupMember -Group "Administrators" -Member "S-1-5-21-xxxxxx-xxxxxx-xxxxxx-513"
这种方式完全绕开名称解析的坑,不会出现截断问题。
4. 排查脚本变量问题
要是脚本里的组名是用变量存储的,检查变量有没有被其他代码误修改——比如是不是用了Substring之类的函数删了部分内容,或者赋值时少打了字符,确保"DOMAIN\Domain Users"字符串完整无缺。
你遇到的报错里显示DOMAIN\domain,明显是原本的DOMAIN\Domain Users被截断了——大概率是批处理调用PowerShell时的引号解析出问题,空格后的Users被当成了单独参数,PowerShell只收到了DOMAIN\Domain,自然找不到对应的组,还触发了账户类型错误。
内容的提问来源于stack exchange,提问作者MousemanGreen
相关产品推荐
相关产品推荐

