C# 调用PowerShell方法

PowerShell应为编写和运行都很方便,所以为了重复利用,经常写了一些小方法或者PS代码片段。使用的时候可能会很难找到自己想要的那个方法,如果要是有一个界面把这些代码管理起来并且调用,那就很爽了

1.创建一个powershell的方法,供C#调用,方法很简单,两个数的加法运算

1 function Sum
2 {
3 param([int]$first, [int]$second)
4 $result = $first + $second
5 return $result
6 }

 2. 在C#的控制台程序中创建一个私有方法,调用powershell

首先定义一个powershell存放路径的全局变量

 1 private static string script =File.ReadAllText(@"Path\Sum.ps1");
 2 private static void CallPS1()
 3 {
 4     using (Runspace runspace = RunspaceFactory.CreateRunspace())
 5         {
 6          runspace.Open();
 7 
 8          PowerShell ps = PowerShell.Create();
 9          ps.Runspace = runspace;
10          ps.AddScript(script);
11          ps.Invoke();
12 
13          ps.AddCommand("Sum").AddParameters(
14 
15              new Dictionary<string, int>()
16              {
17                  {"first", 5},
18                  {"second", 4}
19              }
20          );
21 
22          foreach (PSObject result in ps.Invoke())
23          {
24              Console.WriteLine("CallPS1()");
25              Console.WriteLine(result);
26          }
27 
28 }
29 
30         }

调用方法需要添加一个引用System.Management.Automation.dll 如果找不到可以到这个路径下找到:C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

WPF 开发

如果使用NamedPipeServerStream、Mutex做单实例,需要传入字符串,这时如果传入一个固定的字符串,会在多用户的时候无法使用。

26510
来自专栏java一日一条

深入分析Java ClassLoader原理

大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用...

11820
来自专栏林德熙的博客

C# 字典 Dictionary 的 TryGetValue 与先判断 ContainsKey 然后 Get 的性能对比

本文使用 benchmarkdotnet 测试字典的性能,在使用字典获取一个可能存在的值的时候可以使用两个不同的写法,于是本文分析两个写法的性能。

2.6K20
来自专栏哈雷彗星撞地球

RunLoop总结:RunLoop 与GCD 、Autorelease Pool之间的关系

如果在面试中问到RunLoop相关的知识,很有可能也会问到RunLoop与GCD、Autorelease Pool有没有关系,哪些地方用到了GCD、Autore...

12240
来自专栏高爽的专栏

Nested-Loop Join Algorithms

MySQL使用嵌套循环算法来实现多表之间的联接。 Nested-Loop Join Algorithms 一个简单的嵌套循环联接(NLJ)算法,循环从第一个表中...

27100
来自专栏WindCoder

java基于SSM的Quartz计划任务配置

想找下Quartz的资料看下,某度,随之眼瞎,你们copy就算了,就不能用心点么,连个代码高亮都不忍心加,实在没心情看下去,但还是要忍一下,待我整理完整,再也不...

34810
来自专栏草根专栏

.NET Core/.NET之Stream简介

之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core/.NET的...

42540
来自专栏iOS开发

iOS开发之 Method Swizzling 深入浅出

如果产品经理突然说:"在所有页面添加统计功能,也就是用户进入这个页面就统计一次"。我们会想到下面的一些方法:

49370
来自专栏清晨我上码

第九节 netty前传-NIO 补充Path和File

Java NIO.Path接口位于java.nio.file包中,所以Java Path接口的完全限定名称是java.nio.file.Path。

11440
来自专栏我的小碗汤

爬虫遇到了点问题

golang爬珍爱网代码优化后,运行报了如下的错,找了半小时才找到原因,在此记录一下。

28340

扫码关注云+社区

领取腾讯云代金券