将密钥发送到具有重复名称的特定进程的脚本
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
属性.
过滤候选进程集
我是新来的,所以对于我的问题中的任何错误,我深表歉意。
我正在编写一个 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
属性.