Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

In C# running the PowerShell script first and then invoke() error

I would like to make printer-installer gui with c#, but I given error.
my error is as below.enter image description here

System.Management.Automation.CommandNotFoundException: ‘The term ‘Add’
is not recognized as the name of a cmdlet, function, script file, or
operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.’

my codes are below, where could i be doing wrong? I’m waiting for your help please. I’ve been struggling for 3 days, I looked at all the resources but I couldn’t find a solution.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Management.Automation;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace son1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void ekle_Click(object sender, EventArgs e)
        {

using (System.Management.Automation.PowerShell powershell = System.Management.Automation.PowerShell.Create())
{
    powershell.AddCommand("Add");
    powershell.AddArgument("-");
    powershell.AddArgument("PrinterPort");
    powershell.AddArgument("-");
    powershell.AddArgument("name");
    powershell.AddArgument(printer_ip);
    powershell.AddArgument("-");
    powershell.AddArgument("PrinterHostAddress");
    powershell.AddArgument(printer_ip);
    powershell.Invoke();
}
using (System.Management.Automation.PowerShell powershell = System.Management.Automation.PowerShell.Create())
{
    powershell.AddCommand("Add");
    powershell.AddArgument("-");
    powershell.AddArgument("Printer");
    powershell.AddArgument("-");
    powershell.AddArgument("Name");
    powershell.AddArgument(printer_name);
    powershell.AddArgument("-");
    powershell.AddArgument("PortName");
    powershell.AddArgument(printer_ip);
    powershell.AddArgument("-");
    powershell.AddArgument("DriverName");
    powershell.AddArgument("Canon Generic Plus PCL6");
    powershell.Invoke();
}
System.Windows.MessageBox.Show("Success!");

            

}
        }
    }

>Solution :

The API is a little more sophisticated than requiring you to input every single string token manually.

AddCommand() takes the whole command name at once:

powershell.AddCommand('Add-Printer');

For named parameter arguments, use AddParameter() instead of AddArgument():

powershell.AddParameter("Name", ad);
powershell.AddParameter("PortName", ip)
// etc...

Note that the - that we usually use in front of parameter names in PowerShell scripts is not actually part of the name itself, so don’t include that.


If you want to execute multiple pipelines as separate statements, call AddStatement() in between the call to AddCommand() for the first command in the next pipeline:

using (System.Management.Automation.PowerShell powershell = System.Management.Automation.PowerShell.Create())
{
    // call `Add-PrinterPort ...`
    powershell.AddCommand("Add-PrinterPort");
    powershell.AddParameter("Name", printer_ip);
    powershell.AddParameter("PrinterHostAddress", printer_ip);

    // terminate previous statement (equivalent to a newline or `;` in powershell)
    powershell.AddStatement();

    // then call `Add-Printer ...`
    powershell.AddCommand("Add-Printer");
    powershell.AddParameter("Name", printer_name);
    powershell.AddParameter("PortName", printer_ip);
    powershell.AddParameter("DriverName", "Canon Generic Plus PCL6");

    // Invoke the whole thing at once
    powershell.Invoke();
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading