-
-
Save developerprofiles/456a5733867dc4f3a19b98c8388dc7b5 to your computer and use it in GitHub Desktop.
How to execute PowerShell script or cmdlets from C# code?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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