0

I'm trying to pass powershell parameters using c#. How can I pass these parameters in c# so that it will execute as expected. The function is Update-All which passes the variable Name that is 'test example'. The command that I will like to invoke is to call the function to Disable that variable Name 'test example.' Thanks in Advance.

    protected void Page_Load(object sender, EventArgs e)
    {
        TestMethod();
    }

    string scriptfile = "C:\\Users\\Desktop\\Test_Functions.ps1";

    private Collection<PSObject> results;

    public void TestMethod()
    {
        RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();

        Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
        runspace.Open();

        RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);

        Pipeline pipeline = runspace.CreatePipeline();

        //Here's how you add a new script with arguments
        Command myCommand = new Command(scriptfile);

        CommandParameter testParam = new CommandParameter("Update-All Name 'test example'", "Function 'Disable'");
        myCommand.Parameters.Add(testParam);

        pipeline.Commands.Add(myCommand);

        // Execute PowerShell script
        results = pipeline.Invoke();

    }

1 Answer 1

1

Is this okay? The answer is similar to this post

public void TestMethod()
{
    string script = @"C:\Users\Desktop\Test_Functions.ps1";

    StringBuilder sb = new StringBuilder();

    PowerShell psExec = PowerShell.Create();
    psExec.AddScript(script);
    psExec.AddCommand("Update-All Name 'test example'", "Function 'Disable'");

    Collection<PSObject> results;
    Collection<ErrorRecord> errors;
    results = psExec.Invoke();
    errors = psExec.Streams.Error.ReadAll();

    if (errors.Count > 0)
    {
        foreach (ErrorRecord error in errors)
        {
            sb.AppendLine(error.ToString());
        }
    }
    else
    {
        foreach (PSObject result in results)
        {
            sb.AppendLine(result.ToString());
        }
    }

    Console.WriteLine(sb.ToString());
}

The results/errors will be printed in the string builder for you to see

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.