使用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:\windows\assembly\GAC_MSIL\System.Management.Automation\1.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 "二十四个时辰已经不适合这台电脑了, 快回自己的自己的星球!!";
74 } 75 } 76 }
代码大功告成,现在需要把这个Library进行编译,编译好后就可以为powershell用了。
4. 现在进入今天另外一个重要的环节,导入DLL到powershell并执行Cmdlet
4.1 使用Import-Module dll的全路径,导入dll
4.2 现在就是见证奇迹的时刻,输入我们的命令get-Greeking -Name test
在英文系统下直接执行上面的cmdlet,中文显示乱码,使用ISE就没有乱码的问题,在此谢谢@walkerwang帮助解决乱码问题
这个是我第一次如此认真的写完一篇博客,希望这个对大家有帮助,如果有帮助就推荐一下吧,谢谢支持!
转载于:https://www.cnblogs.com/BoyceYang/archive/2013/06/13/3134286.html
使用Visual Studio 2010 一步一步创建Powershell Module 和 Cmdlet相关推荐
- C语言的环境搭建(Microsoft Visual Studio 2010的介绍与安装)
C语言的环境搭建 一.常用的环境 : 1.Microsoft Visual C++ (简称Visual C++.MSVC.VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言, ...
- Win7使用Visual Studio 2010编译用于Qt4.8.6的MySQL驱动
其实编译过程在Qt Creator 的帮助文档里有,我就是照着做的,但是没成功,因为不能照搬照抄! 1.确保path环境变量里有QTDIR,这个就不细说了. 2.打开"开始"-&g ...
- 给Visual Studio 2010中文版添加Windows Phone 7模板
给Visual Studio 2010中文版添加Windows Phone 7模板(解决Express版本只有英文语言的 (方法一): 装了WP7的SDK,会自动安装Visual Studio Exp ...
- 扩展Visual Studio 2010服务器资源管理器中的SharePoint结点
Visual Studio 2010最大的卖点就是可扩展性.这样就可以借助.NET社区的力量基于VS构建出许多有用的工具.本文中我们将展示如何扩展VS2010的服务器资源管理器,在其中的SharePo ...
- 如何在Visual Studio 2010中使用CppUTest建立TDD的Code Kata的环境
CppUTest 是一个功能全面的测试框架,是为了支持在多种操作系统上开发嵌入式软件而特别设计的.CppUTest的宏被设计成不需要了解C++也可以写测试用例.这使得C程序员更容易用这个测试框架. 那 ...
- Visual Studio 2010 Ultimate敏捷测试驱动开发
在微软Visual Studio 2010 Ultimate Beta2版本中,MSF for Agile Software Development 5.0过程框架,是以Scrum模型为基础导向扩展, ...
- Visual Studio 2010中的UML
Visual Studio越来越丰满了,Visual Studio 2010没有MSDN,没有汉化包就2.18G了,可能有很多.net的程序员或初学人员在抱怨,这么大,都有什么用呀?我在刚学习.net ...
- Visual Studio 2010 Ultimate敏捷利剑:详解Scrum
随着微软Visual Studio 2010 Ultimate Beta2版本的发布,除了它提供协同一致的ALM(应用程序生命周期)管理工具外,MSF for Agile Software Devel ...
- 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)
Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级 ...
最新文章
- 性能测试应用领域分析
- 干货!如何设计实现一个通用的分布式事务框架?
- learnpythonthehardway EX41 相关
- 【Android】使用AIDL传递用户自定义类型数据--附完整示例代码
- ngx_event_expire_timers
- 【最新合集】PAT甲级最优题解(题解+解析+代码)
- rocketmq存储结构_RocketMQ消息存储
- 95-136-041-源码-Operator-AbstractStreamOperator
- LuoguP2680 运输计划
- 关于打印室计算机购置的申请书,物资采购申请书格式范文
- matlab命令打开Word文档
- 传奇源码分析---框架
- Excel技能培训之十 选择性粘贴,单元格公式转换为数值,对每个单元格进行运算,行列转换,只粘贴非空值
- 安卓一键清理内存_雨点清理app下载-雨点清理手机版v1.0
- python_day10のPython操作 RabbitMQ、Redis、Memcache
- 分享6个优质的黑科技APP,简约良心还免费
- 无法完成操作,因为文件包含病毒或潜在的垃圾软件解决方案
- 基于强化学习与深度强化学习的游戏AI训练
- 专访阿里巴巴量子实验室:最强量子电路模拟器“太章”到底强在哪? 1
- 微信小程序-登录(wx.login)
热门文章
- 脚本实现oracle服务启停,通用服务启停shell脚本
- Python3不用str自带lower转换位小写字母
- iphone屏幕录制_iPhone怎么内录声音?怎么录制苹果手机内部声音?
- 简单比对照片是否相同_小新说法 | 如何认定商标是否侵权?
- 山东省102021年普通高考成绩查询,山东高考成绩今日发布!成绩查询看这里!
- android系统三防机,这才是真正给老人设计的智能手机:三防+安卓系统+超大音量,AGM H2...
- 按应用领域来划分,电话光端机主要分为哪几类
- 光纤收发器模块如何选购,光纤收发器模块选购原则
- 【渝粤教育】电大中专药剂学基础知识_1作业 题库
- [渝粤教育] 中国地质大学 操作系统原理(新) 复习题