前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Visual Studio 2010 一步一步创建Powershell Module 和 Cmdlet

使用Visual Studio 2010 一步一步创建Powershell Module 和 Cmdlet

作者头像
数据分析
发布2018-03-01 16:24:34
1.1K0
发布2018-03-01 16:24:34
举报
文章被收录于专栏:数据分析数据分析

之前写了一个C# 调用PowerShell方法, 那么怎么反过来操作呢,也就是怎么样用C#写一个powershell命令呢?

现在就用C#写一个超级简单的Module和Cmdlet

1. 在VS中创建一个Library的项目

文件->新建->项目->C#->Class Library

在这里给我们的Class Library起一个名字”FirstPS”

2. 添加必要的引用“System.Management”和“System.Management.Automation”

2.1   添加System.Management

在新建的项目下面找到引用->添加引用

在.net选项卡下找到System.Management

2.2   添加System.Management.Automation

可以在C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\下面找到

在添加引用的窗口选择“浏览”选项卡,找到需要的引用

3. 现在进入今天的一个重要环节,编写业务逻辑

代码语言:javascript
复制
 1 namespace FirstPS
 2 {
 3     [Cmdlet(VerbsCommon.Get, "Greeting")]   //创建get命令,get-Greeting
 4     public class DemoPS : PSCmdlet
 5     {
 6         [Parameter(Mandatory = true)]       //命令行后需要一个参数: get-Greeting -Name 输入一个字符串
 7         public string Name { get;set;}
 8 
 9         protected override void ProcessRecord()
10         {
11             WriteObject(string.Format("Hello {0}, 现在是: {1}", Name, Greeting()));
12         }
13 
14         /// <summary>
15         /// 根据系统时间,判断十二个时辰
16         /// </summary>
17         /// <returns>当前时间是那个时辰</returns>
18         private string Greeting()
19         {
20             int hour = DateTime.Now.Hour;
21             if (hour >= 23)
22             {
23                 return "子时\n【子时】夜半,又名子夜、中夜:十二时辰的第一个时辰。(北京时间23时至01时)。";
24             }
25             if (hour >= 21)
26             {
27                 return "亥时\n【亥时】人定,又名定昏等:此时夜色已深,人们也已经停止活动,安歇睡眠了。人定也就是人静。(北京时间21时至23时)。";
28             }
29             if (hour >= 19)
30             {
31                 return "戌时\n【戌时】黄昏,又名日夕、日暮、日晚等:此时太阳已经落山,天将黑未黑。天地昏黄,万物朦胧,故称黄昏。(北京时间19时至21时)。";
32             }
33             if (hour >= 17)
34             {
35                 return "酉时\n【酉时】日入,又名日落、日沉、傍晚:意为太阳落山的时候。(北京时间17是至19时)。";
36             }
37             if (hour >= 15)
38             {
39                 return "申时\n【申时】哺时,又名日铺、夕食等:(北京时间15食至17时)。";
40             }
41             if (hour >= 13)
42             {
43                 return "未时\n【未时】日昳,又名日跌、日央等:太阳偏西为日跌。(北京时间13时至15时)。";
44             }
45             if (hour >= 11)
46             {
47                 return "午时\n【午时】日中,又名日正、中午等:(北京时间11时至13时)。";
48             }
49             if (hour >= 9)
50             {
51                 return "巳时\n【巳时】隅中,又名日禺等:临近中午的时候称为隅中。(北京时间09 时至11时)。";
52             }
53             if (hour >= 7)
54             {
55                 return "辰时\n【辰时】食时,又名早食等:古人“朝食”之时也就是吃早饭时间,(北京时间07时至09时)。";
56             }
57             if (hour >= 5)
58             {
59                 return "卯时\n【卯时】日出,又名日始、破晓、旭日等:指太阳刚刚露脸,冉冉初升的那段时间。(北京时间05时至07时)。";
60             }
61             if (hour >= 3)
62             {
63                 return "寅时\n【寅时】平旦,又称黎明、早晨、日旦等:时是夜与日的交替之际。(北京时间03时至05时)。";
64             }
65             if (hour >= 1)
66             {
67                 return "丑时\n【丑时】鸡鸣,又名荒鸡:十二时辰的第二个时辰。(北京时间01时至03时)。";
68             }
69             if (hour >= 0)
70             {
71                 return "子时\n【子时】夜半,又名子夜、中夜:十二时辰的第一个时辰。(北京时间23时至01时)。";
72             }
73             return "二十四个时辰已经不适合这台电脑了, 快回自己的自己的星球!!";

代码大功告成,现在需要把这个Library进行编译,编译好后就可以为powershell用了。

4. 现在进入今天另外一个重要的环节,导入DLL到powershell并执行Cmdlet

4.1 使用Import-Module dll的全路径,导入dll

4.2 现在就是见证奇迹的时刻,输入我们的命令get-Greeking -Name test

在英文系统下直接执行上面的cmdlet,中文显示乱码,使用ISE就没有乱码的问题,在此谢谢@walkerwang帮助解决乱码问题

这个是我第一次如此认真的写完一篇博客,希望这个对大家有帮助,如果有帮助就推荐一下吧,谢谢支持!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-06-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档