Отправлять ключи в Powershell alt n {TAB} {ENTER}

#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 кнопку.

Пожалуйста, перейдите на страницу документации, чтобы здесь увидеть полный список доступных опций.