使用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 用於初始化 收集信息,準備數據等階段
Proce***ecord  用於命令執行過程
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章