使用VisualStudio构建自定义Snap-In

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


创建解决方案
创建类库解决方案,并且为其命名
 创建类库解决方案

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

添加对System.Configuration.Install的引用
 
创建PSSnapIn
用于编写PowerShell CmdLet 的全部类均在System.Management.Automation 下

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

创建CmdLet
在继承PSSnapIn 之后将创建CmdLet
 创建CmdLet

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

此时首先声明CmdLet 参数
 此时首先声明CmdLet 参数

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

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

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


编译/注册Snampin
编写完成使用 Visual Studio 自带的编译功能 进行编译 生成解决方案
 编译/注册Span-In

在解决方案路径下找到生成的Dll 文件
 在解决方案路径下找到生成的Dll 文件

此后注册Snap-In

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

运行 InstallUtil.exe进行注册
 运行 InstallUtil.exe进行注册

此后使用Get-PSSnapin 进行检查安装
 此后使用Get-PSSnapin 进行检查安装

加载Snap-In

加载Snap-In 
尝试运行自定义命令
 

进行测试

删除Snap-In

导航注册表到
HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1
找到PowerShellSnapIns 若之前没有安装过任何Span-In 则不存在
 删除对应键 即完成Span-In 解除注册

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


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

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

你可能感兴趣的:(windows,操作系统,解决方案,管理员)