powerCLI 从脚本重启虚拟机

powerCLI restart VM guest from script

我正在尝试 运行 批处理脚本,它将调用 ps1 以重新启动 VM 来宾。 它在我 运行 分开时工作,但问题是 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 个命令合并到一个文件中?

要从 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

您仍然可以使用 File-Parameter:

从 cmd 调用此 PowerShell 脚本
powershell -File <script>