You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#开发打印机安装GUI调用PowerShell时出现Add命令未识别错误

问题根因

你调用PowerShell命令的写法存在两处核心错误,直接触发了报错:

  1. PowerShell中添加打印机端口的完整cmdlet是Add-PrinterPort,添加打印机的完整cmdlet是Add-Printer,你错误把完整命令拆成了Add作为命令名,把PrinterPort/Printer当成了独立参数,系统找不到Add这个独立命令就会抛出匹配的异常。
  2. 参数名也被错误拆分,比如-Name是完整参数名,你拆成了-和Name两个独立参数,完全不符合PowerShell的参数传递规则。

修正后的代码

你可以将ekle_Click方法的逻辑替换为以下内容,同时增加了错误捕获逻辑方便后续排查问题:

private void ekle_Click(object sender, EventArgs e)
{
    // 这里请替换为你实际的输入控件取值逻辑,给打印机IP、名称赋值
    string printer_ip = txtPrinterIp.Text.Trim();
    string printer_name = txtPrinterName.Text.Trim();

    // 第一步:添加打印机端口
    using (PowerShell powershell = PowerShell.Create())
    {
        powershell.AddCommand("Add-PrinterPort");
        powershell.AddParameter("Name", printer_ip);
        powershell.AddParameter("PrinterHostAddress", printer_ip);
        
        var results = powershell.Invoke();
        if (powershell.HadErrors)
        {
            foreach (var error in powershell.Streams.Error)
            {
                MessageBox.Show($"添加端口失败:{error.ToString()}");
                return;
            }
        }
    }

    // 第二步:添加打印机
    using (PowerShell powershell = PowerShell.Create())
    {
        powershell.AddCommand("Add-Printer");
        powershell.AddParameter("Name", printer_name);
        powershell.AddParameter("PortName", printer_ip);
        powershell.AddParameter("DriverName", "Canon Generic Plus PCL6");
        
        var results = powershell.Invoke();
        if (powershell.HadErrors)
        {
            foreach (var error in powershell.Streams.Error)
            {
                MessageBox.Show($"添加打印机失败:{error.ToString()}");
                return;
            }
        }
    }

    MessageBox.Show("Success!");
}

补充注意事项

  • 程序运行时需要管理员权限,添加打印机端口、安装打印机属于系统级操作,普通用户权限会被拦截
  • 提前确认目标设备已经安装了Canon Generic Plus PCL6驱动,否则打印机会添加失败
  • 确保项目已经正确引用System.Management.Automation程序集

内容的提问来源于stack exchange,提问作者rockatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:15:03