【问题标题】:Script to send keys to a specific process that has duplicate name将密钥发送到具有重复名称的特定进程的脚本
【发布时间】:2022-01-17 22:56:30
【问题描述】:

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

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

$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)

【问题讨论】:

  • 那是 details 还是 process 选项卡?
  • @AbrahamZinala 其详细信息选项卡,进程选项卡显示:programname.exe(32-bit) (2)

标签: powershell uninstallation sendkeys


【解决方案1】:

有两点需要注意:

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

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


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

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

为了提高稳健性,请考虑按.StartTime 属性过滤候选进程集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多