Powershell:卸载提示用户输入的软件
Posted
技术标签:
【中文标题】Powershell:卸载提示用户输入的软件【英文标题】:Powershell: Uninstall Software that has prompts for user input 【发布时间】:2016-02-12 13:34:24 【问题描述】:如果提示用户输入,是否有人知道是否可以通过 PowerShell 卸载软件?我有多个脚本可以卸载几乎任何东西,除了我需要卸载的一个软件。我特别想卸载下载 PDFCreator 时安装的 PDFForge 工具栏。
我编写的脚本都没有失败,它们只是在运行时挂起,我相信是因为卸载过程要求用户输入才能继续。
【问题讨论】:
嗨,1. 请显示一些代码 2.malwaretips.com/blogs/pdfforge-toolbar-removal 我认为使用内置“卸载程序”“卸载”这个恶意软件不会有效也不够 为什么这被否决了? 我希望我知道...感谢您的关注 :) 【参考方案1】:PowerShell 不会与提示交互...您不能告诉它在可执行文件中单击“下一步”,因为它看不到它。
不过,您可以向它发送密钥。您实际上只是在使用 COM 对象。
因此,首先,通过设置一个包含数组的变量来获取您的进程 ID,该数组的数据由您的进程名称定义。假设您的进程被称为“卸载”并且该进程已在运行:
$a = Get-Process | ?$_.Name -eq "Uninstall"
启动 COM:
$wshell = New-Object -ComObject wscript.shell;
将带有此进程 ID 的卸载程序放在前面,以便我们发送按键:
$wshell.AppActivate($a.id)
给它几秒钟的时间让窗口向前移动。我选择了 5,但如果你的机器压力不大,2 可能就足够了:
Start-Sleep 5
现在开始告诉它您要发送哪些密钥。这里的语法是这样的:() 中的任何内容都是将要发送的内容。单引号中的位置是要发送的击键,逗号之后是您希望它在继续之前等待多长时间。假设第一个屏幕是“下一步”,您可以通过告诉 PowerShell 发送 ENTER 键并等待 5 秒来发送您的第一个命令:
$wshell.SendKeys('~',5)
等待功能是可选的,但出于您的目的,您肯定会想要它。 (如果你不想要它$wshell.SendKeys('~')
会发送 ENTER 键并立即移动到下一个命令。)
手动完成卸载,使用所有击键,对于您发送的任何击键,请注意在加载卸载的下一部分之前需要多长时间,并等待比您的脚本更长的时间(例如,如果它处理你的 ENTER 键,我会让它等待 3 或 5 秒,然后再发送下一个命令。如果加载需要 5 秒,我会告诉它在发送下一个命令之前等待 10 秒)。
字母是字母,数字是数字。大多数非命令只是分配给他们的键(意味着如果你想输入“K”你的命令就是$wshell.SendKeys('K')
)你可以在这里获得特定键的概要:https://msdn.microsoft.com/en-us/library/office/aa202943(v=office.10).aspx。
【讨论】:
并确保在此脚本运行时没有人接触工作站!以上是关于Powershell:卸载提示用户输入的软件的主要内容,如果未能解决你的问题,请参考以下文章