如何使用PowerShell(PowerCLI)确定VM自定义规范状态?

时间:2018-09-13 11:10:03

标签: powershell vmware powercli

场景

我目前正在处理Powershell脚本,该脚本应执行以下任务:

  1. 克隆给定的虚拟机
  2. 执行自定义规范任务
  3. 执行一些克隆后任务,例如域加入,在AD中移动计算机帐户...

问题/问题

我需要检测定制过程的当前状态。可以通过PowerCLI命令获得它吗?

注意:,如果在自定义任务中未完成sysprep和重新启动的情况下继续执行脚本,则以下任务将失败...

已经测试过的场景

等待工具

如果已经尝试使用power-cli命令wait-tools等待syspep完成。这里的问题是,在sysprep完成之前vmware工具已经可以工作,并且脚本会出错,因为sysprep之后vm仍需要最后一次重启,因此脚本会出错

VI事件

我什至尝试处理目标机器的最近VI事件。尤其是对事件“ CustomizationStartedEvent”,“ CustomizationSucceeded”和“ CustomizationFailed”做出反应 与等待工具相同的情况是:当sysprep完成并且vm等待最终重启时,将发出“ CustomizationSucceeded”事件

用Restart-Computer代替Restart-VMGuest

这两个命令均引发错误“ VMTools未运行”或“ WinRM未运行”。

使用VM属性测试VMware工具状态

我还尝试使用$GetVMNew.ExtensionData.Guest.ToolsRunningStatus获取vmware工具状态。但结果与Wait-Tools相同

guestcust.log内容进行反应

日志中的最后一个条目具有与“ CustomizationSucceeded” VI事件相同的时间戳。因此,这将导致重新启动出现相同的计时问题

等待域加入

在sysprep完成并且vm self还没有启动之前就发生域加入

2 个答案:

答案 0 :(得分:0)

我不确定您是什么意思CustomizationSpec的状态,无论如何,您都可以使用Get-OSCustomizationSpec PowerCLI cmdlet来处理CustomizationSpecs:

例如,您可以更改网络地址,设置VM名称等。请参见示例以在克隆过程之前更改规范的IP地址:

Get-OSCustomizationSpec ConfSpecName | 
Get-OSCustomizationNicMapping | 
Set-OSCustomizationNicMapping -IpMode:"UseStaticIP" -IpAddress 10.0.0.10 `
-SubnetMask "255.255.255.0" -DefaultGateway 10.0.0.254 -Dns 10.0.0.100

查看所有PowerCLI CustomizationSpec Cmdlet:

PS C:\> Get-Command *OS*Spec* | Select Name

Name
----
Get-OSCustomizationSpec
New-OSCustomizationSpec
Remove-OSCustomizationSpec
Set-OSCustomizationSpec

答案 1 :(得分:0)