码迷,mamicode.com
首页 > 其他好文 > 详细

使用VisualStudio构建自定义Snap-In

时间:2014-11-18 12:02:34      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:windows   管理员   解决方案   操作系统   二进制   powershell   

使用VisualStudio构建自定义Snap-In

Snap-In

即在PowerShell V1 时候引入的二进制管理单元,
必须使用 Visual Studio 等开发工具进行开发。用于扩展系统功能,自定义CmdLet
由于这种方法专业性强,普通用户无法独立完成。故在PowerShell V2的时候引入全新的概念 “模块”,

此时 用于扩展系统功能的“模块” 不再需要专业开发人员进行开发,
普通用户可以使用PowerShell 本身的语句,命令进行自定义开发,因其友好,简单,而且易于实现。成为现阶段普通用户扩展

PowerShell功能最受欢迎的方式。
Span-In 开发先决条件
1. 至少安装.Net Framework 3.x
2. 操作系统至少为Windows 7(X86,X64均可)
3. 安装Visual Studio或等效开发工具
4. 最低安装PowerShell2.0
5. 拥有等效本机管理员权限(用于安装Span-In)

在本例中环境如下
Visual Studio 2013 Update 1
PowerShell4.0
Windows 8.1 Update


创建解决方案
创建类库解决方案,并且为其命名
 bubuko.com,布布扣

添加必要引用
添加 对 System.Management.Automation 的引用
其路径位置为
C:WindowsassemblyGAC_MSILSystem.Management.Automation1.0.0.0__31bf3856ad364e35System.Management.Automation.dll
添加对 System.Configuration的引用
添加对System.Configuration.Install的引用
 bubuko.com,布布扣

bubuko.com,布布扣
 
创建PSSnapIn
用于编写PowerShell CmdLet 的全部类均在System.Management.Automation 下

PSSnapIn 为抽象类 首先继承此类,此类知名SnapIn的基本信息
如SpanIn 名称,作者,简短描述
bubuko.com,布布扣 

创建CmdLet
在继承PSSnapIn 之后将创建CmdLet
 bubuko.com,布布扣

[Cmdlet("Get", "EFSFiles")] 指明CmdLet 名称
其命名规则必须严格按照PowerShell 命令命名方式 动词-名词
然后继承PSCmdlet 类
 bubuko.com,布布扣

此时首先声明CmdLet 参数
 bubuko.com,布布扣

请注意
[Parameter(Mandatory = true, Position = 1, HelpMessage = "输入搜索路径")]
这一行和使用PowerShell 命令编写命令参数完全一致
如果需要请按照命名规则以及书写方式编写。
bubuko.com,布布扣

如果有多个参数请在此时完成全部参数编写。
此后进入CmdLet 核心功能编写
 bubuko.com,布布扣

BeginProcessing 用于初始化 收集信息,准备数据等阶段
ProcessRecord  用于命令执行过程
EndProcessing 命令结束收尾,清理资源记录日志等等
以上三个阶段分别对应在使用PowerShell 命令编写时候的
Begin
Process
End


编译/注册Snampin
编写完成使用 Visual Studio 自带的编译功能 进行编译 生成解决方案
 bubuko.com,布布扣

在解决方案路径下找到生成的Dll 文件
 bubuko.com,布布扣

此后注册Snap-In

以管理员运行PowerShell
找到你所使用的.Net 版本所在文件夹路径
 bubuko.com,布布扣

运行 InstallUtil.exe进行注册
 bubuko.com,布布扣

此后使用Get-PSSnapin 进行检查安装
 bubuko.com,布布扣

加载Snap-In

bubuko.com,布布扣 
尝试运行自定义命令
  bubuko.com,布布扣

进行测试

删除Snap-In

导航注册表到
HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1
找到PowerShellSnapIns 若之前没有安装过任何Span-In 则不存在
 bubuko.com,布布扣

删除对应键 即完成Span-In 解除注册


本文已于2014-07-03同步发布在www.ilync.cn

本文出自 “自动化世界” 博客,谢绝转载!

使用VisualStudio构建自定义Snap-In

标签:windows   管理员   解决方案   操作系统   二进制   powershell   

原文地址:http://strikene.blog.51cto.com/5877668/1577725

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!