将密钥发送到具有重复名称的特定进程的脚本

Script to send keys to a specific process that has duplicate name

我是新来的,所以对于我的问题中的任何错误,我深表歉意。

我正在编写一个 powershell 脚本来卸载一个程序,我需要它向该程序发送密钥,以单击要求用户输入的部分。问题是我的脚本调用了一个名称重复的进程,它无法区分两者。唯一的区别是它使用了多少内存。有没有办法根据进程占用的内存量来 select 进程?感谢您的帮助。

$a = Get-Process | ?{$_.name -eq 'setup'}
$wshell = New-Object -ComObject wscript.shell;
$wshell.appactivate($a.Id)
Start-Sleep 5
$wshell.sendkeys('~',10)
$wshell.sendkeys('~',5)

预先注意两件事:

  • 尝试通过模拟用户输入来自动化应用程序,例如通过发送击键,本质上是脆弱的,只能作为最后的手段使用。

    • 在手头的案例中,看看 setup.exe 是否支持不需要交互式响应的参数。
  • .SendKeys() method 没有记录在案的 second 参数 - 您认为它有什么作用?


要获取感兴趣的进程,请尝试以下操作:

$a = Get-Process setup |
       Sort-Object -Descending WorkingSet64 |
         Select-Object -First 1

为了更加稳健,请考虑通过 .StartTime 属性.

过滤候选进程集