使用PowerShell执行Unsecure Join失败,请求技术排查帮助
解决Unsecured Join域时Add-Computer的参数错误问题
从你提供的错误日志和命令来看,核心问题是**Add-Computer的参数组合冲突**,导致系统返回0x57(无效参数)错误。具体来说,日志里的NetpJoinDomainOnDs: Machine password and the user account are passed. Error out.明确说明:你同时传递了机器账户密码和用户凭证,这两个参数在UnsecuredJoin场景下是互斥的。
下面给你两个可行的解决思路,对应不同的参数组合方式:
方案1:使用预创建计算机账户的凭证(带$后缀)
AD中计算机账户的SAM账户名默认是计算机名+$(比如你的EC2AMAZ-P9HUK50$),而你之前创建PSCredential时用的是不带$的名称,这也会导致凭证匹配失败。修正命令如下:
# 确认主机名匹配 if ((& hostname) -ne 'EC2AMAZ-P9HUK50') { throw "Unexpected hostname!" } # 使用带$的计算机账户名创建凭证 $acctName = 'EC2AMAZ-P9HUK50$' $password = 'FOOBARNON' $passwordSS = ConvertTo-SecureString -String $password -AsPlainText -Force $passCred = New-Object PSCredential($acctName, $passwordSS) # 仅使用UnsecuredJoin选项,去掉PasswordPass(避免参数冲突) Add-Computer -DomainName "sub.example.local" -Options UnsecuredJoin -Credential $passCred
方案2:直接传递机器账户密码,不使用Credential参数
这种方式更贴近你成功的netdom命令逻辑,利用PasswordPass选项传递预创建账户的密码,不需要额外指定凭证:
# 确认主机名匹配 if ((& hostname) -ne 'EC2AMAZ-P9HUK50') { throw "Unexpected hostname!" } $password = 'FOOBARNON' $passwordSS = ConvertTo-SecureString -String $password -AsPlainText -Force # 组合UnsecuredJoin和PasswordPass选项,用AccountPassword传递密码 Add-Computer -DomainName "sub.example.local" -Options UnsecuredJoin,PasswordPass -AccountPassword $passwordSS
额外验证点
在执行命令前,再确认以下几点:
- 预创建的AD计算机账户状态为已启用,密码与你使用的
FOOBARNON完全一致 - 待加入域的计算机当前未加入任何域,处于
WORKGROUP工作组 - 网络连通性正常,能访问域控制器
sub.example.local
内容的提问来源于stack exchange,提问作者E Bekker
相关产品推荐
相关产品推荐

