PowerShell ISE执行输出stderr的程序时为何弹出确认框?如何禁用?
解决PowerShell ISE中调用pskill弹出确认对话框的问题
首先咱们来理清楚根源:Sysinternals系列工具(包括pskill)第一次在系统上运行时,默认会弹出EULA最终用户许可协议的确认对话框——哪怕你用命令行参数调用,在PowerShell ISE这种带GUI交互的环境里,这个弹窗还是会触发。你测试的pskill -h报错,本质也是因为EULA还没被接受,工具没完成初始化,导致参数解析失败。
下面是几种彻底解决的方法,按需选择:
手动一次性接受许可
打开普通的PowerShell控制台(不是ISE)或者CMD窗口,直接输入pskill并回车,此时会弹出EULA窗口,点击「Agree」同意。之后不管是在ISE还是脚本里调用pskill,都不会再弹这个对话框了。脚本中静默接受许可(适合自动化场景)
如果不想手动操作,可以在第一次调用pskill时加上/accepteula参数,让工具自动接受许可:# 首次调用时添加参数,后续调用无需再带 pskill /accepteula # 之后正常使用pskill pskill <你的进程ID或进程名>这个参数会跳过GUI弹窗,直接在后台完成许可接受,完全不影响脚本运行。
通过注册表预先配置许可状态
Sysinternals工具会把EULA的接受状态存在注册表中,我们可以直接创建对应的键值来跳过弹窗:# 创建pskill的许可接受注册表项 New-Item -Path "HKCU:\Software\Sysinternals\PsKill" -Force | New-ItemProperty -Name "EulaAccepted" -Value 1 -PropertyType DWORD -Force执行这条命令后,系统会认为你已经接受了pskill的许可,后续任何场景下调用都不会再弹出确认框。
最后验证一下:运行ise -noprofile后,先执行上面的任一方法,再输入pskill -h,就能正常显示帮助信息,不会报错也不会弹窗了。
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

