PowerShell入門(十二):編寫PowerShell嵌入式管理單元和二進位模組

來源:互聯網
上載者:User
文章目錄
  • 編寫嵌入式管理單元
  • 使用嵌入式管理單元
  • 編寫二進位模組
  • 結語

  PowerShell一開始就提出利用嵌入式管理單元來實現自訂cmdlet,為大型軟體系統提供有別於UI介面的指令碼化管理方案。在PowerShell V2中,PowerShell嵌入式管理單元還能以二進位模組的方式處理。

編寫嵌入式管理單元

  編寫PowerShell嵌入式管理單元需要依賴System.Management.Automation程式集;而System.Management.Automation程式集是Windows SDK的一部分,所以安裝Windows SDK是編寫PowerShell嵌入式管理單元的先決條件。可以從這裡下載Windows SDK。

  作為編寫PowerShell嵌入式管理單元的準備,我們先開啟VS2008或者VS2010,建立一個類庫項目,目標.Net Framework版本選擇3.5。簡單編譯通過之後,就可以編寫cmdlet命令類和SnapIn安裝類了。

編寫cmdlet類

  自訂cmdlet類有以下幾個步驟:

  1、在項目中添加對System.Management.Automation程式集的引用(路徑是C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll);並且添加相應命令空間的引用using System.Management.Automation;

  2、建立名為New-Addition的類,添加對命令空間System.Management.Automation的引用;

  3、讓New-Addition類繼承自PSCmdlet,並給New-Addition類添加Cmdlet屬性標記,設定動詞和名詞;

  4、添加參數資訊,參數一定要用Parameter屬性標記;

  5、重載ProcessRecord函數,實現自己的商務邏輯;

編寫cmdlet類的樣本如下(本文樣本參考了Ivor Bright's blog):

using System;using System.Management.Automation;namespace PSSnapInDemo1{    [Cmdlet(VerbsCommon.New, "Addition")]    public class New_Addition: PSCmdlet    {        [Alias("X")]        [Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true)]        public int FirstParameter { get; set; }        [Alias("Y")]        [Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true)]        public int SecondParameter { get; set; }        protected override void ProcessRecord()        {            WriteObject(string.Format("{0} + {1} = {2}", this.FirstParameter, this.SecondParameter,                 this.FirstParameter + this.SecondParameter));        }    }}

編譯通過後,自訂的cmdlet類就完成了,接下來就可以編寫PSSnapIn安裝類了。

編寫PSSnapIn安裝類

  編寫PSSnapIn安裝類的目的是使該類庫能夠被安裝,並且被系統識別為PowerShell嵌入式管理單元。步驟如下:

  1、添加對System.Configuration.Install程式集的引用;

  2、建立名為PSSnapInInstaller的類,添加對命名空間System.ComponentModel和System.Management.Automation的引用;

  3、讓PSSnapInInstaller類繼承自PSSnapIn,並且以RunInstaller(true)屬性標識它。

  4、重載Name、Vendor和Description三個屬性;

樣本如下:

using System;using System.Management.Automation;using System.ComponentModel;namespace PSSnapInDemo1{    [RunInstaller(true)]    public class PSSnapInInstaller : PSSnapIn    {        public override string Description        {            get { return "This is Luke's first Snap In demo"; }        }        public override string Name        {            get { return "PSSnapInDemo1"; }        }        public override string Vendor        {            get { return "CaiJu"; }        }    }}

編譯通過以後,PSSnapIn安裝類也完成了,這樣我們編寫代碼的工作就全部完成了。編譯整個解決方案,產生類庫檔案。

使用嵌入式管理單元

  編寫好的嵌入式管理單元,在使用之前需要先註冊。註冊流程如下:

  1、開啟Visual Studio內建的命名行,並且導航到PSSnapInDemo1.dll的目錄中;

  2、執行“installUtil /i PSSnapInDemo1.dll”命令;

如上命令如果成功執行,註冊過程就完成了;如果不成功,請仔細檢查安裝過程的log檔案。

  PowerShell嵌入式管理單元註冊成功後,就可以將其添加到當前會話中使用了。尋找已經註冊的PowerShell嵌入式管理單元,可用以下命令:

PS C:\Users\luke> Get-PSSnapin -Registered | ftName                           PSVersion            Description----                           ---------            -----------PSSnapInDemo1                  2.0                  This is Luke's first Snap I...SqlServerCmdletSnapin100       2.0                  This is a PowerShell snap-i...SqlServerProviderSnapin100     2.0                  SQL Server Provider

以上命令的輸出結果已經顯示出了我們剛剛註冊的PowerShell嵌入式管理單元,添加嵌入式管理單元使用如下命令:

PS C:\Users\luke> Add-PSSnapin -Name PSSnapInDemo1

PowerShell嵌入式管理單元添加成功後,就可以使用其中的命令了,使用方法與使用系統內建的cmdlet命令相同。

編寫二進位模組

  編寫二進位模組的編寫與編寫嵌入式管理單元的方法基本相同,都需要實現cmdlet類,但它不需要實現安裝類。具體方法參見上述編寫cmdlet類的步驟。需要說明的是,同時實現了PSSnapIn類的類庫,仍然可以當作二進位模組來使用。也就是說,PowerShell嵌入式管理單元的組件檔,可以不加修改的當成二進位模組的程式集來使用。

使用二進位模組

  二進位模組的使用與PowerShell入門(十一):編寫指令碼模組中指令碼模組的使用方法相同,即在搜尋目錄下建立同名檔案夾,並將程式集拷貝進去,可選建立描述檔案等;然後尋找和匯入模組。之後,二進位模組中的命令就可以使用了。

結語

  除了自訂cmdlet外,PowerShell嵌入式管理單元還可以編寫自訂提供者。提供者是一個更進階別的概念,系統預定義的有檔案系統、註冊表和認證等。不過,PowerShell嵌入式管理單元中不能定義別名和變數,如果你需要這些功能,可以選擇使用指令碼模組。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.