Вызов сценария PowerShell внутри гостевой виртуальной машины с помощью PowerCLI Invoke-VMScript

Внутри моей гостевой виртуальной машины у меня есть скрипт PowerShell, который выполняет некоторую автоматизацию. Однако я пытаюсь вызвать этот сценарий PowerShell извне, используя PowerCLI (внутри PowerShell). В настоящее время мой сценарий работает, но вместо того, чтобы «запускать» сценарий PowerShell внутри гостевой виртуальной машины, он вместо этого открывает его как текстовый файл. Кроме того, внутри гостевой виртуальной машины есть обнаружение интерактивных служб, которое появляется, когда я вызываю приведенный ниже скрипт. Как я могу решить эти проблемы?

add-pssnapin VMware.VimAutomation.Core 

Connect-VIServer 192.168.1.29 # connects to vCenter 

$vm = Get-VM -name 'CentOS 7'
$script = '"C:\Automation\StartServices.ps1"'
Invoke-VMScript -vm $vm -ScriptText $script -GuestUser 'user' - GuestPassword 'password' -ScriptType Powershell

person ennha1    schedule 02.08.2017    source источник
comment
Вы пытаетесь запустить скрипт powershell на Cent OS?   -  person Tobias Wollgam    schedule 02.08.2017


Ответы (1)


Используйте одинарные или двойные кавычки для пути $script, но не оба:

$script = 'C:\Automation\StartServices.ps1'

Кажется, это единственная проблема. Протестировано и работает в моей среде PowerCLI.

person Jelphy    schedule 02.08.2017
comment
Это помогло, скрипт теперь работает, но на моей гостевой виртуальной машине всплывают экраны обнаружения интерактивных служб и изолируют автоматизацию в другой среде. Я отключил обнаружение интерактивных служб, перейдя в services.msc и отключив его, но затем, когда я запускаю скрипт, ничего не происходит (я ожидаю, что программа откроется и произойдет какое-то нажатие) - person ennha1; 02.08.2017
comment
@ennha1 Invoke-VMScript не запускает приложения/программы на переднем плане с пользовательским интерфейсом. Он используется для удаленного выполнения сценариев в фоновом режиме. Чего вы пытаетесь достичь? - person Jelphy; 02.08.2017
comment
Хм. Возможно, тогда у меня сложилось неправильное впечатление. У меня есть сценарий PowerShell, который я хочу запустить. Однако этот сценарий PowerShell выполняет ряд действий: открывает программу, вызывает другую макрофункцию, которая выполняет некоторые действия. - person ennha1; 02.08.2017
comment
@ennha1 Я не думаю, что это возможно с Invoke-VMScript. Например, если вы используете: Invoke-VMScript -ScriptText { Start-Process notepad.exe } -VM ... процесс запустится в фоновом режиме, но блокнот не откроется. Вы можете подтвердить это, используя Get-Process notepad на удаленной машине. - person Jelphy; 02.08.2017
comment
Я попробовал именно это, открыв блокнот или calc.exe. Все эти программы открываются в фоновом режиме (где появляется интерактивный дисплей), поэтому они находятся как бы в своей собственной изолированной среде, а не на переднем плане. Это кажется правильным? - person ennha1; 02.08.2017
comment
@ennha1 ennha1 На моем компьютере процесс запускается в фоновом режиме, но интерактивный графический интерфейс (калькулятор, редактор блокнота) не отображается на переднем плане. - person Jelphy; 02.08.2017
comment
Правильно, эти приложения (calc, блокнот) в фоновом режиме, верно? - person ennha1; 02.08.2017
comment
Ну в фоне - процесс запущен но приложения на рабочем столе не видно. - person Jelphy; 02.08.2017
comment
Круто, именно это я и вижу. Спасибо, что сообщили мне об этом ограничении Invoke-VMScript. - person ennha1; 02.08.2017
comment
Есть ли у вас возможность запускать приложения на переднем плане с помощью powercli? - person user2331760; 26.11.2019