#powershell
#powershell
Вопрос:
Я нахожусь в процессе автоматизации ежедневной загрузки zip-файла с защищенного сайта. Готов скрипт, который использует Internet Explorer для входа в систему и перехода в требуемое местоположение, а затем нажимает на кнопку загрузить, скрипт работает, как ожидалось, до сих пор.
При нажатии кнопки загрузить предлагается нажать на кнопку сохранить. Пробовали отправлять ключи с помощью приведенных ниже
$wshell = New-Object -ComObject WScript.Shell
$id = (gps iex* | where {$_.MainWindowTitle -match "Title"}).id
$wshell.AppActivate($id)
start-sleep 1
$wshell.SendKeys("%{n}")
Start-Sleep 1
хочу отправить ключи (Alt n TAB ENTER), попробовал, изменив несколько вещей, но в итоге получил тот же результат.
Комментарии:
1. В качестве совета: использование SendKeys etc, вероятно, является худшим способом автоматизации материалов, связанных с веб-сайтом. Самый простой способ сделать это — проверить веб-запросы с помощью такого инструмента, как fiddler, выполнить вход в систему и т.д., Чтобы вы могли использовать для этого обычные командлеты Invoke-Webrequest.
Ответ №1:
Для эмуляции отправки ключей требуется использовать System.Windows.Forms.SendKeys
класс.
Знак плюса ( ), каретка (^), знак процента (%), тильда (~) и круглые скобки () имеют особое значение для ключей отправки. Чтобы указать один из этих символов, заключите его в фигурные скобки ({})
В вашем случае, согласно документации, пример кода должен выглядеть следующим образом:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait("%n{TAB}{ENTER}")
Где:
%
расшифровывается какALT
кнопка;n
расшифровывается какn
кнопка;{TAB}
расшифровывается какTAB
кнопка;{ENTER}
обозначаетENTER
кнопку.
Пожалуйста, перейдите на страницу документации, чтобы здесь увидеть полный список доступных опций.