将计算机加入域的 Powercli 脚本

Powercli script to join computer to the Domain

我正在尝试 运行 来自 VM 的 Powercli 脚本,其中包含所有需要的模块。 该脚本应将其他 VM 插入域。

$ScriptText ="Add-Computer -DomainName foofoo.com -DomainCredential " + $DomainC +"  -OUPath 'OU=CACI,OU=Computers,OU=bla,OU=Regions,DC=bla,DC=com'" 
echo $Script
Invoke-VMScript -vm $VMName -GuestCredential $AdminC -ScriptText $ScriptText 

所有变量都正确插入。

运行ing Add-Computer -DomainName foofoo.com -DomainCredential $DomainC -OUPath 'OU=CACI,OU=Computers,OU=bla,OU=Regions,DC=bla,DC=com' 从另一个 vm poweshell 控制台是 运行ning 以及输出消息 WARNING: The changes will take effect after you restart the computer ..

$脚本return:

Add-Computer -DomainName foofoo.com -DomainCredential System.Net.NetworkCredential -OUPath 'OU=CACI,OU=Computers,OU=bla,OU=Regions,DC=bla,DC=com'

但之后这个脚本卡住了,我没有错误或其他输出。

知道这是什么原因吗?

Add-Computer CMDlet 使用域凭据参数的凭据对象。通过尝试将其转换为 $scripttext 变量中的字符串 - 您将在转换中丢失凭证类型。您需要在脚本文本中创建一个凭据对象,而不是传入包含凭据对象的变量。这增加了一些复杂性,因为您通常希望从安全保管库中提取密码。下面的示例显示了如何将密码作为纯文本包含 - 但出于显而易见的原因,并不真正建议这样做。

$scripttext = @'
$user = "UserName"
$password = ConvertTo-SecureString "bar" -AsPlainText -Force
$DomainC = New-Object PSCredential $user, $password
Add-Computer -DomainName foofoo.com -DomainCredential $DomainC -OUPath 'OU=CACI,OU=Computers,OU=bla,OU=Regions,DC=bla,DC=com'
'@
Invoke-VMScript -vm $VMName -GuestCredential $AdminC -ScriptText $ScriptText