使用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的引用
創建PSSnapIn
用於編寫PowerShell CmdLet
的全部類均在System.Management.Automation 下
PSSnapIn 爲抽象類
首先繼承此類,此類知名SnapIn的基本信息
如SpanIn 名稱,作者,簡短描述
創建CmdLet
在繼承PSSnapIn
之後將創建CmdLet
[Cmdlet("Get", "EFSFiles")] 指明CmdLet
名稱
其命名規則必須嚴格按照PowerShell 命令命名方式
動詞-名詞
然後繼承PSCmdlet 類
此時首先聲明CmdLet
參數
請注意
[Parameter(Mandatory = true, Position = 1,
HelpMessage = "輸入搜索路徑")]
這一行和使用PowerShell
命令編寫命令參數完全一致
如果需要請按照命名規則以及書寫方式編寫。
如果有多個參數請在此時完成全部參數編寫。
此後進入CmdLet
核心功能編寫
BeginProcessing 用於初始化
收集信息,準備數據等階段
Proce***ecord
用於命令執行過程
EndProcessing
命令結束收尾,清理資源記錄日誌等等
以上三個階段分別對應在使用PowerShell
命令編寫時候的
Begin
Process
End
編譯/註冊Snampin
編寫完成使用 Visual
Studio 自帶的編譯功能 進行編譯 生成解決方案
在解決方案路徑下找到生成的Dll 文件
此後註冊Snap-In
以管理員運行PowerShell
找到你所使用的.Net
版本所在文件夾路徑
運行
InstallUtil.exe進行註冊
此後使用Get-PSSnapin
進行檢查安裝
加載Snap-In
嘗試運行自定義命令
進行測試
刪除Snap-In
導航註冊表到
HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1
找到PowerShellSnapIns 若之前沒有安裝過任何Span-In
則不存在
刪除對應鍵 即完成Span-In 解除註冊
本文已於2014-07-03同步發佈在www.ilync.cn