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

VMware客户机虚拟机通过Netdom加入自定义域失败,报错‘DNS name contains an invalid character’

VMware客户机虚拟机通过Netdom加入自定义域失败,报错‘DNS name contains an invalid character’

嗨,我仔细看了你的问题和脚本代码,马上发现了一个很容易踩坑的细节——函数参数传递顺序不匹配,这正是触发“DNS name contains an invalid character”错误的核心原因!

问题根源

先看你的Join-Domain函数定义:

Function Join-Domain ($VM, $HC, $GC, $OUPath, $Domain, $DomainUser, $DomainPassword) {
    $joind = "c:\windows\system32\netdom.exe join /d:$Domain $VM /OU:$OUPath /userd:$DomainUser /passwordd:$DomainPassword"
    Invoke-VMScript -VM $VM -HostCredential $HC -GuestCredential $GC -ScriptType bat -ScriptText $joind
}

函数里的参数顺序是:$VM → $HC → $GC → $OUPath → $Domain → $DomainUser → $DomainPassword

但你实际调用函数时的传参顺序却是:

Join-Domain $VM $HostCred $GuestCred $Domain $OUPath $DomainUser $DomainPassword

这里你把$Domain和$OUPath的位置搞反了!这就导致netdom命令里的/d:$Domain实际上被赋值成了OU路径字符串OU=Computers,DC=matlockhome,DC=com——这个字符串里的逗号属于DNS名称不允许的无效字符,自然就抛出了错误。

解决方法

只需要修正调用函数时的参数顺序,把$OUPath和$Domain的位置调换即可:

Join-Domain $VM $HostCred $GuestCred $OUPath $Domain $DomainUser $DomainPassword

额外检查建议(可选)

为了确保万无一失,你还可以做这些验证:

  • 手动在目标虚拟机里执行netdom命令,确认命令本身有效:打开命令提示符,运行netdom join /d:MATLOCKHOME.com <你的VM名称> /OU:OU=Computers,DC=matlockhome,DC=com /userd:MATLOCKHOME\Administrator /passwordd:<你的密码>,看是否能正常加入域。
  • 确认$Domain变量的值格式正确:不管用NetBIOS名(MATLOCKHOME)还是完整FQDN(MATLOCKHOME.com)都可以,但要确保没有多余的空格或特殊字符。
  • 验证GuestCredential拥有足够的权限在虚拟机内执行系统级命令,HostCredential能正常访问ESXi主机并调用Invoke-VMScript。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:03:14