PowerShell и внешние интерактивные программы - PullRequest
2 голосов
/ 23 апреля 2010

Я пытаюсь написать сценарий PowerShell, который, помимо прочего, запускает две внешние программы, собирает выходные данные одной и передает ее другой.

Проблема заключается в том, что вторая программа является интерактивнойи запрашивает:
- пароль
- опция (1, 2 или 3)
- опция (Y или N)
- вывод внешней программы 1

Обратите внимание, что это на XP с PowerShell v1 и .net v2.0 (нет, я не могу обновить)

Есть идеи, как мне это сделать?*

1 Ответ

0 голосов
/ 24 апреля 2010

Попробуйте проверить, можете ли вы передать параметры через стандартный ввод, например ::1001*

$prog1out = prog1
"mypassword`r`n1`r`nY`r`n$prog1out" | prog2

Если это не сработает, другой способ (хакерский и, возможно, хрупкий) - использовать SendKeys, например ::1004*

[reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
[windows.forms.sendkeys]::SendWait("mypassword`r`n")
Start-Sleep -sec 1 # may need to vary this
[windows.forms.sendkeys]::SendWait("1`r`n")
# rinse and repeat

Обратите внимание, что SendKeys работает с окном переднего плана, что может быть проблемой для вас, если только вы не убедитесь, что приглашение PowerShell остается окном переднего плана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...