使用Visual Studio 2010 一步一步创建Powershell Module 和 Cmdlet
之前写了一个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:windowsassemblyGAC_MSILSystem.Management.Automation1.0.0.0__31bf3856ad364e35下面找到
在添加引用的窗口选择“浏览”选项卡,找到需要的引用
3. 现在进入今天的一个重要环节,编写业务逻辑
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帮助解决乱码问题
这个是我第一次如此认真的写完一篇博客,希望这个对大家有帮助,如果有帮助就推荐一下吧,谢谢支持!
- MySQL和Oracle的添加字段的处理差别 (r10笔记第73天)
- MySQL修改数据类型的问题总结(r10笔记第74天)
- 深究|Elasticsearch单字段支持的最大字符数?
- Go语言中Socket通信之Tcp客户端
- Oracle 12c PDB迁移及ORA-00600错误分析和解决(r10笔记第72天)
- 【Go 语言社区】epoll详解
- Oracle 12c数据库升级实战(r10笔记第70天)
- Oracle 12c升级检查问题分析(r10笔记第69天)
- 转--使用Revel(go)开发网站
- GoldenGate数据迁移的问题总结(二)(r10笔记第85天)
- Elasticsearch究竟要设置多少分片数?
- 设计模式(1)-使用简单工厂优化代码
- 简单易学的机器学习算法——因子分解机(Factorization Machine)
- Elasticsearch全文检索实战小结——复盘我带的第二个项目
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Smarty模板变量与调节器实例详解
- Linux中搭建完整的samba服务器全攻略(centos版)
- Thinkphp5 自定义上传文件名的实现方法
- PHP读取文件,解决中文乱码UTF-8的方法分析
- Linux低电量自动关机的实现办法
- php设计模式之工厂方法模式分析【星际争霸游戏案例】
- PHP+Apache实现二级域名之间共享cookie的方法
- linux虚拟机配置静态IP地址的完整步骤
- laravel-admin利用ModelTree实现对分类信息的管理
- Linux系统下快速配置HugePages的完整步骤
- Laravel5.1 框架关联模型之后操作实例分析
- PHP实现的多进程控制demo示例
- 你可能不知道的一些linux文件权限管理办法
- Laravel框架路由与MVC实例详解
- python实现学生管理系统开发