如何将BluePrism附加到PowerShell进程并实现字符输入?
解决Blue Prism附加外部启动PowerShell进程的问题
我来帮你搞定这个问题,结合你已经用C#启动PowerShell拿到PID,但Application Modeller没法附加、Diagnostics快照提示Not Connected的情况,给你分步梳理解决方案:
一、先排查基础权限与进程状态问题
首先得确保基础环境没问题,否则后续操作都是白搭:
- 权限要对齐:如果你的C#程序是管理员身份启动的,Blue Prism也必须用管理员权限运行,不然会因为权限隔离看不到目标PowerShell进程。
- 确认进程存活:打开任务管理器,找到对应PID的
powershell.exe,确保它在正常运行,没有被挂起或者隐藏。
二、用Application Modeller手动附加指定PID的进程
Blue Prism其实支持直接通过PID定位进程,按这个步骤来:
- 打开Application Modeller,点击顶部的Launch/Attach按钮。
- 在弹出的窗口里选Attach to an existing instance,然后点击Browse。
- 在进程列表里找对应PID的
powershell.exe,如果看不到就勾选Show all processes选项。 - 选中进程后点OK,尝试捕获输入控件。如果还是不行,手动配置进程属性:
- 在Application Modeller的Application Properties面板里,把Process Name设为
powershell.exe,Process ID填入你C#获取到的PID值,保存后再尝试附加。
- 在Application Modeller的Application Properties面板里,把Process Name设为
三、解决Diagnostics的"Not Connected"提示
这个问题一般是Blue Prism和目标进程的通信出了问题,试试这些修复手段:
- 重启相关程序:彻底关闭Blue Prism和PowerShell进程,然后以管理员身份重启Blue Prism,再用C#重新启动PowerShell,立即尝试附加(避免进程状态变化)。
- 检查Blue Prism服务:打开
services.msc,找到Blue Prism Application Manager服务,确保它处于Running状态,要是没启动就手动启动它。 - 禁用PowerShell快速编辑:右键PowerShell窗口标题栏→属性→取消勾选快速编辑模式,这个模式有时候会导致进程响应异常,重启PowerShell后再试。
四、自动化附加的进阶方案(C#+Blue Prism API)
如果想让整个流程自动化,不用手动操作Application Modeller,可以用Blue Prism的.NET API来实现:
- 引用Blue Prism安装目录下的
BluePrism.Automate.dll。 - 编写代码连接Blue Prism会话,定位应用模型并附加进程:
using BluePrism.Automate; // 连接本地Blue Prism实例 var bluePrismSession = new Session(); bluePrismSession.Connect("localhost"); // 获取你预先创建好的PowerShell应用模型(替换成你的模型名称) var psAppModel = bluePrismSession.ApplicationModels.GetByName("PowerShell_Input_Model"); // 设置进程ID并执行附加 psAppModel.Properties["Process ID"].Value = yourPowerShellPID.ToString(); psAppModel.Attach(); // 模拟输入字符(替换成你的控件名称) var inputControl = psAppModel.Controls.GetByName("PS_Input_Area"); inputControl.SendKeys("Hello from Blue Prism!");
注意:使用API需要确保你的账号有Blue Prism操作权限,且API版本和Blue Prism主程序版本兼容。
五、避坑提醒
- 位数匹配:64位系统下,如果Blue Prism是32位版本,要启动32位PowerShell(路径是
%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe),否则会因为位数不兼容无法识别进程。 - 给进程留初始化时间:C#启动PowerShell后,不要立刻尝试附加,等1-2秒让进程完全就绪,再执行附加操作。
内容的提问来源于stack exchange,提问作者antogerva
相关产品推荐
相关产品推荐

