2017-02-16 23 views
0

Я пытаюсь запустить пакетный скрипт, который вызовет ps1 для перезапуска гостевой системы VM. он работает, когда я запускал его отдельно, но проблема в том, что powerCLI на нагрузке CMD без аргументов.powerCLI restart VM guest из сценария

я попробовал запустить его по шагам:

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

затем на ЦМД:

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

затем:

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

это все прекрасно работает отдельно, но при попытке объединить все это - не работает. Кажется, что powerCLI загружается быстрее, чем консоль пишет.

я пытаюсь

Start-Sleep -s 10 

команды, но без успеха.

Как я могу объединить все 3 команды выше в одном файле?

ответ

2

Чтобы выполнить команды PowerShell с cmd, вам нужно будет передать их вместе с помощью Command-Switch из PowerShell.

Вы можете добиться того, что вы хотите, выполнив следующую команду:

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 

Вы все еще будет в состоянии назвать этот PowerShell скрипт из ЦМД, с помощью файла-параметра:

powershell -File <script> 
+0

работает как волшебство :-) Я реализую второе решение, как вы предлагаете. –

+0

Обратите внимание, что 'Restart-VM' вызовет жесткий сброс виртуальной машины, что эквивалентно нажатию кнопки сброса на физическом компьютере. Если вы хотите перезагрузить гостевую систему, вместо этого используйте 'Restart-VMGuest'. –