Skip to content

Instantly share code, notes, and snippets.

@mouadcherkaoui
Forked from miteshsureja/Program.cs
Created July 13, 2020 16:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mouadcherkaoui/19ad99d015da4fe570b0f9ac8ba93d19 to your computer and use it in GitHub Desktop.
Save mouadcherkaoui/19ad99d015da4fe570b0f9ac8ba93d19 to your computer and use it in GitHub Desktop.
How to execute PowerShell script or cmdlets from C# code?
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Management.Automation;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace PowerShellScriptExecutor
{
class Program
{
static void Main(string[] args)
{
using (PowerShell PowerShellInst = PowerShell.Create())
{
string criteria = "system*";
PowerShellInst.AddScript("Get-Service -DisplayName " + criteria);
Collection<PSObject> PSOutput = PowerShellInst.Invoke();
foreach (PSObject obj in PSOutput)
{
if (obj != null)
{
Console.Write(obj.Properties["Status"].Value.ToString() + " - ");
Console.WriteLine(obj.Properties["DisplayName"].Value.ToString());
}
}
Console.WriteLine("Done");
Console.Read();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Management.Automation;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace PowerShellScriptExecutor
{
class Program
{
static void Main(string[] args)
{
//Execute PS1(PowerShell script) file
using (PowerShell PowerShellInst = PowerShell.Create())
{
string path = System.IO.Path.GetDirectoryName(@"C:\Temp\") + "\\Get-EventLog.ps1";
if (!string.IsNullOrEmpty(path))
PowerShellInst.AddScript(System.IO.File.ReadAllText(path));
Collection<PSObject> PSOutput = PowerShellInst.Invoke();
foreach (PSObject obj in PSOutput)
{
if (obj != null)
{
Console.Write(obj.Properties["EntryType"].Value.ToString() + " - ");
Console.Write(obj.Properties["Source"].Value.ToString() + " - ");
Console.WriteLine(obj.Properties["Message"].Value.ToString() + " - ");
}
}
Console.WriteLine("Done");
Console.Read();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Management.Automation;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace PowerShellScriptExecutor
{
class Program
{
static void Main(string[] args)
{
//execute powershell cmdlets or scripts using command arguments as process
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.FileName = @"powershell.exe";
//execute powershell script using script file
//processInfo.Arguments = @"& {c:\temp\Get-EventLog.ps1}";
//execute powershell command
processInfo.Arguments = @"& {Get-EventLog -LogName Application -Newest 10 -EntryType Information | Select EntryType, Message}";
processInfo.RedirectStandardError = true;
processInfo.RedirectStandardOutput = true;
processInfo.UseShellExecute = false;
processInfo.CreateNoWindow = true;
//start powershell process using process start info
Process process = new Process();
process.StartInfo = processInfo;
process.Start();
Console.WriteLine("Output - {0}", process.StandardOutput.ReadToEnd());
Console.WriteLine("Errors - {0}", process.StandardError.ReadToEnd());
Console.Read();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment