使用c#代码调用powershell
PowerShell
PowerShell/PowerShell: PowerShell 是由微软开发的命令行外壳程序和脚本环境,支持任务自动化和配置管理。它包含了丰富的.NET框架功能,适用于Windows和多个非Windows平台,提供了一种强大而灵活的方式来控制和自动执行系统管理任务。
项目地址:https://gitcode.com/gh_mirrors/po/PowerShell
免费下载资源
·
在c#中调用powershell命令,本文介绍了两种方法,一种是在运行的过程中打开powershell界面,另一种是不打开界面,直接运行命令
目录
预备知识:使用c#打开.exe文件
using System.Diagnostics;
Process p = Process.Start("powershell.exe");
p.start();
一、在运行的过程中打开powershell界面
using System.Linq;
using System.Management.Automation;
using System.Text;
using System.Threading.Tasks;
namespace testCentennial
{
class Program
{
static void Main(string[] args)
{
var process = new Process();
process.StartInfo.FileName = @"powershell.exe";
process.StartInfo.Arguments = "get-process";
process.Start();
}
}
}
(1) 如果只添加一条命令的话,可以直接把命令添加到
process.StartInfo.Arguments = "get-process";
(2) 如果想要在powershell运行完命令后不关闭界面,可以把上面那条代码写为:
process.StartInfo.Arguments = "-noexit get-process";
(3) 如果想要添加.ps1脚本的话,
static void Main(string[] args)
{
File.GetAttributes("Start.ps1");
string strCmdText = Path.Combine(Directory.GetCurrentDirectory(), "Start.ps1");
var process = new Process();
process.StartInfo.FileName = @"powershell.exe";//也可以打开自己写的.exe文件,加上路径和名字即可
process.StartInfo.Arguments = "-noexit \"&'" + strCmdText + "'\"";
process.Start();
}
(4)如果想重定向输出,将powershell获得的结果输出到文本中
static void Main(string[] args)
{
File.GetAttributes("Start.ps1");
string strCmdText = Path.Combine(Directory.GetCurrentDirectory(), "Start.ps1");
var process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.FileName = @"powershell.exe";//也可以打开自己写的.exe文件,加上路径和名字即可
process.StartInfo.Arguments = "-noexit \"&'" + strCmdText + "'\"";
process.Start();
string s = process.StandardOutput.ReadToEnd();
process.WaitForExit();
using (StreamWriter outfile = new StreamWriter("StandardOutput.txt", true))
{
outfile.Write(s);
}
}
关于Process.startInfo 属性的具体介绍,可以查看:
https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.startinfo?view=netcore-3.1
二、 不打开界面,直接运行命令
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace test
{
class Program
{
static void Main(string[] args)
{
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript("想要添加的命令");
pipeline.Commands.AddScript("想要添加的命令");
pipeline.Invoke();
runspace.Close();
}
}
}
参考资料:
GitHub 加速计划 / po / PowerShell
17
2
下载
PowerShell/PowerShell: PowerShell 是由微软开发的命令行外壳程序和脚本环境,支持任务自动化和配置管理。它包含了丰富的.NET框架功能,适用于Windows和多个非Windows平台,提供了一种强大而灵活的方式来控制和自动执行系统管理任务。
最近提交(Master分支:4 个月前 )
b0fbfb74
14 天前
617dbda8
19 天前
更多推荐
已为社区贡献1条内容
所有评论(0)