У меня есть скрипт ps1 для получения некоторой информации из среды кластера vmware.
В некоторых местах сценария ps1 требуется нажатие кнопки ENTER.
Итак, как это сделать?
-Спасибо
У меня есть скрипт ps1 для получения некоторой информации из среды кластера vmware.
В некоторых местах сценария ps1 требуется нажатие кнопки ENTER.
Итак, как это сделать?
-Спасибо
Если я правильно понимаю, вы хотите, чтобы PowerShell отправлял нажатие клавиши ENTER в какое-то интерактивное приложение?
$wshell = New-Object -ComObject wscript.shell;
$wshell.AppActivate('title of the application window')
Sleep 1
$wshell.SendKeys('~')
Если это интерактивное приложение является сценарием PowerShell, просто используйте все, что находится в строке заголовка окна PowerShell, в качестве аргумента для AppActivate (по умолчанию это путь к powershell.exe). Чтобы избежать двусмысленности, вы можете переименовать свое окно сценария с помощью команды title 'new window title'
.
Несколько заметок:
{ENTER}
, хотя они не идентичны — это клавиша ENTER на клавиатуре. Полный список доступен здесь: http://msdn.microsoft.com/en-us/library/office/aa202943%28v=office.10%29.aspx.Sleep 1
заключается в ожидании 1 секунды, потому что для активации окна требуется некоторое время, и если вы немедленно вызовете SendKeys, он отправит ключи в окно PowerShell или в никуда. .Иногда метод SendKeys в wscript.shell может быть немного странным, поэтому, если у вас возникнут проблемы, замените четвертую строку выше на эту:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait('~');
Wscript.Shell
и использованием SendKeys.SendWait
? Один лучше другого?
- person tfpf; 22.07.2021
Также $wshell = New-Object -ComObject wscript.shell;
помог скрипту, который работал в фоновом режиме, он работал нормально, просто добавив $wshell
. исправлено его запуск в качестве фона! [Microsoft.VisualBasic.Interaction]::AppActivate("App Name")