我试图运行批处理脚本,它将调用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个命令合并到一个文件中?
答案 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>