使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

休眠锁定模式– PESSIMISTIC_FORCE_INCREMENT锁定模式如何工作

介绍 在我以前的文章中 &#xff0c;我介绍了OPTIMISTIC_FORCE_INCREMENT锁定模式&#xff0c;并将其应用于将子实体版本更改传播到锁定的父实体。 在本文中&#xff0c;我将介绍PESSIMISTIC_FORCE_INCREMENT锁定模式&#xff0c;并将其与乐观的锁定模式进行比较。 相像多于不…

Android防盗系统推荐

智游防盗是北京智游网安科技有限公司推出的一款手机防盗软件。智游防盗主要功能分为近身防盗和远程防盗。其中近身防盗包括“包包模式”&#xff0c;“静止模式”&#xff0c;“口袋模式”&#xff0c;“充电模式”四个防盗模式。开启“包包模式”后&#xff0c;当手机被拿出包…

实用程序类与函数式编程无关

最近&#xff0c;我被指控反对函数式编程&#xff0c;因为我将实用程序类称为反模式 。 绝对是错的&#xff01; 好吧&#xff0c;我确实认为它们是一种糟糕的反模式&#xff0c;但是它们与函数式编程无关。 我相信有两个基本原因。 首先&#xff0c;函数式编程是声明性的&…

MySQL5.5加主键锁读问题【转】

【来自&#xff1a;http://dinglin.iteye.com/blog/1884696】背景 有同学讨论到MySQL 5.5下给大表加主键时会锁住读的问题&#xff0c;怀疑与fast index creation有关&#xff0c;这里简单说明下。 对照现象 为了说明这个问题的原因&#xff0c;有兴趣的同学可以做对比实验。 1…

freeredius3.0 mysql_EDIUS视频采集卡 STROM 3G HD/HD SDI

EDIUS STROM 3G HD/HD SDI高清非编系统视音频采集卡STORM 3G? 适用于视频专业人士&#xff0c;满足基于SDI编辑和无带化工作流程&#xff0c;同时可以在低成本的HDMI监&#xff0f;视器上预监。基于PCIe插口类型的STORM 3G解决方案包括EDIUS?非线性编辑软件&#xff0c;3G HD…

Openshift:使用Java 8在Wildfly 8.2.0上构建Spring Boot应用程序

OpenShift DIY墨盒是在OpenShift上测试不受支持的语言的好方法。 但是它不具有可伸缩性&#xff08;您可以在此处为可伸缩DIY墨盒投票&#xff09;&#xff0c;这使得它很难与生产级Spring Boot应用程序一起使用。 但是&#xff0c;如果我们将Spring Boot应用程序部署到WildFly…

mysql索引ppt2020_mysql数据库索引

cmd 命令行1、mysql -u root -p ------进入数据库2、use mysql -------使用数据库3、show index from table_name; ------查看某张表的索引4、删除索引其中任一条drop index index_name on table_name ;alter table table_name drop index index_name ;alter tab…

response.sendRedirect使用注意事项 .

response.sendRedirect使用注意事项 . 问题&#xff1a;最近在调试xwiki的时候遇到java.lang.IllegalStateException异常&#xff0c;解决方案&#xff1a;在response.sendRedirect("")方法后加return&#xff1b;语句即可&#xff1a;原因是在程序中两次调用respons…

以编程方式确定Java类的JDK编译版本

当需要确定使用哪个JDK版本来编译特定的Java .class文件时&#xff0c; 通常使用的方法是使用javap并在javap输出中查找列出的“主要版本”。 我在博客文章Autoboxing&#xff0c;Unboxing和NoSuchMethodError中引用了这种方法&#xff0c;但是在继续以编程方式实现此方法之前&…

mysql传输数据到中间表_mysql通过中间表实现数据的“部分复制” -电脑资料

一、基本思路1.在主库上&#xff0c;为不同的从库建立各自的中间表2.主库与从库之间只对“中间表”进行复制操作3.从库上&#xff0c;“中间表”通过触发器&#xff0c;实现与“实体表”的数据同步二、主库结构与配置主库结构&#xff1a;主库配置&#xff1a;三、从库结构与配…

NO1:在Windows端安装SecureCRT来连接Linux

正常情况下都不会直接在Linux服务端进行操作&#xff0c;实际使用服务器和工作电脑不会在同一个地方&#xff0c;也不允许在服务器操作。 我这里用SecureCRT 7.0来连接服务器。提供个下载&#xff0c;带注册机工具&#xff1a;http://pan.baidu.com/share/link?shareid1430164…

如何使用Spring Security和Basic身份验证保护Jersey REST服务

在我之前的博客文章“ 检查REST API是否有效的快速方法–从清单文件中获取GET详细信息”中 &#xff0c;我展示了如何开发REST资源以轻松检查开发的REST API是否可用。 在本文中&#xff0c;我将介绍如何使用Spring Security和基本身份验证来保护此资源的安全性– “在HTTP事务…

python提取数据段_python提取数据段 python数据分析

如何在python中用slice分段取数据&#xff1f;执行以下操作&#xff1a;&gt&gt arange(6)&gt&gt a[0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5]&gt&gt a[0:3]&#xff0c;a[5][[2&#xff0c;3&#xff0c;4&#xff0c;4&a…

计算几何相关资料+题目推荐(不定期补充)

旋转卡壳&#xff1a;http://blog.csdn.net/accry/article/details/6070626 计算几何题目推荐&#xff1a;http://blog.csdn.net/accry/article/details/6070656 先是计算几何入门题推荐 &#xff1a; 计算几何题的特点与做题要领&#xff1a;1.大部分不会很难&#xff0c;少部…

一个JAXB Nuance:字符串与枚举(受限制的XSD字符串)

尽管用于XML绑定的Java体系结构 &#xff08; JAXB &#xff09;在名义情况下&#xff08;尤其是自Java SE 6以来&#xff09; 相当容易使用&#xff0c;但它也存在许多细微差别。 一些常见的细微差别是由于无法将 XML模式定义 &#xff08;XSD&#xff09;类型与Java 类型精确…

weblogic概览下的上下文根配置_weblogic创建域

WebLogic 域配置策略在本文的 第一部分 (第 8 期,卷 3 , WLDJ )中,我曾向您详细介绍了可用于创建和配置域,以及经 过评估的指南和模板选项的不同策略。 ...startWebLogic.cmd 2.startWebLogic-8001.cmd 输入域的管理名和密码即可运行 新建一个停止脚本:stopWebLogic-8001.cmd 内…

ActiveMQ 持久化讯息数据库信息

www.MyException.Cn 发布于&#xff1a;2012-11-10 10:48:50 浏览&#xff1a;0次ActiveMQ 持久化消息数据库信息最近有网友问我&#xff0c;ActiveMQ持久化的中表结构是什么&#xff0c;表需要人工创建吗&#xff1f;我告诉他们不需要&#xff0c;ActiveMQ会帮助我们生成的…

休眠锁定模式– OPTIMISTIC_FORCE_INCREMENT锁定模式如何工作

介绍 在我以前的文章中 &#xff0c;我解释了OPTIMISTIC锁定模式是如何工作的&#xff0c;以及它如何帮助我们同步外部实体状态更改。 在本文中&#xff0c;我们将介绍OPTIMISTIC_FORCE_INCREMENT锁定模式的使用模式。 使用LockModeType.OPTIMISTIC &#xff0c;将在当前正在运…

java mysql nullpointerexception_无法从Java连接到MySQL:MySQL驱动程序连接逻辑中的NullPointerException...

我正在尝试连接到我在Java程序中使用MySQL创建的数据库,但它总是失败.为了举例,这是我的代码&#xff1a;import java.sql.*;public class Squirrel {public static void main(String[] args) {String user;String password;Connection connection;Statement statement;try {Cl…

Android应用中Back键的监听及处理

MainActivity如下: package cn.testnbackpressed; import android.os.Bundle; import android.view.KeyEvent; import android.app.Activity; /*** Demo描述:* 处理Back键按下事件* * 注意事项:* 以下两种方法勿一起使用*/ public class MainActivity extends Activity {Overri…