powerCLI从脚本重新启动VM guest虚拟机

时间:2017-02-16 12:53:24

标签: windows powershell vmware powercli

我试图运行批处理脚本,它将调用ps1以重新启动VM guest虚拟机。 当我单独运行它时它正在工作,但问题是CMD加载的powerCLI没有参数。

我试过按步骤运行它:

echo on 
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noe -c ". \"C:\Program Files (x86)\VMware\Infrastructure\PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\" $true"

然后在cmd:

connect -viserver -server "serverName" -Protocol https -User "user"-Password "pass"

然后:

Restart-VM "VMserverName"  -RunAsync -Confirm:$false

这一切都可以单独运行但是当试图将它们全部组合时 - 它不起作用。 似乎powerCLI加载速度比控制台写入更快。

我正在尝试

Start-Sleep -s 10

命令但没有成功。

如何将上述所有3个命令合并到一个文件中?

1 个答案:

答案 0 :(得分:2)

要从cmd执行PowerShell命令,您必须使用PowerShell的Command-Switch传递它们。

您可以通过执行以下命令来实现您的目标:

powershell -Command "Import-Module VMware.VimAutomation.Core; Connect-VIServer -Server <server> -User <user> -Password <password>; Restart-VM <vm_name>  -RunAsync -Confirm:$false"

这是一种非常麻烦的方法。我建议直接使用PowerShell,并至少能够正确格式化脚本:

Import-Module VMware.VimAutomation.Core
Connect-VIServer -Server <server> -User <user> -Password <password>
Restart-VM <vm_name>  -RunAsync -Confirm:$false

您仍然可以使用文件参数从cmd调用此PowerShell脚本:

powershell -File <script>