【问题标题】:Powercli script to join computer to the Domain将计算机加入域的 Powercli 脚本
【发布时间】:2020-05-20 17:46:40
【问题描述】:

我正在尝试从包含所有模块的 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 

正确插入所有变量。

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

$脚本返回:

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

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

知道这是什么原因吗?

【问题讨论】:

  • 直接在虚拟机上运行脚本`Add-Computer ...`会发生什么?
  • 我编辑了答案 - 它运行良好,并且 VM 已插入域。谢谢提问

标签: powershell dns invoke powercli powershell-cmdlet


【解决方案1】:

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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    相关资源
    最近更新 更多