Invoke-GetVmPower启动VM报错但Get-VM正常的技术求助
解决方法
1. 修正Invoke-GetVmPower的参数格式
Invoke-GetVmPower的-Vm参数不接受VM名称,需要传入VM的UUID或vCenter分配的VM ID。可以通过PowerCLI命令获取正确标识符:
- 获取VM UUID:
(Get-VM "VMNAME").ExtensionData.Config.Uuid - 获取VM的vCenter内部ID:
(Get-VM "VMNAME").ExtensionData.MoRef.Value
将获取到的值替换原有参数,例如:
Invoke-GetVmPower -Vm "503f996a-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
2. 确认SDK模块的连接上下文
Invoke-GetVmPower属于VMware vSphere SDK for PowerShell模块,它和传统PowerCLI的Connect-VIServer是独立的连接会话。需要重新用SDK的命令连接vCenter:
Connect-vSphereServer -Server 你的vCenter地址 -Credential (Get-Credential)
3. 等待Terraform创建后的同步延迟
Terraform完成VM创建后,vCenter的API元数据可能需要几秒同步时间。执行命令前添加延迟:
Start-Sleep -Seconds 10 Invoke-GetVmPower -Vm "正确的VM标识符"
4. 检查Terraform输出变量
确认test_machine_vm_01_output输出的是VM的UUID而非名称。修改Terraform配置,输出正确的标识符:
output "test_machine_vm_01_output" { value = vmware_virtual_machine.test_machine_vm_01.uuid }
执行terraform output test_machine_vm_01_output验证输出值后,再传入命令使用。
内容的提问来源于stack exchange,提问作者Danilo Patrucco
相关产品推荐
相关产品推荐

