首页 > 代码库 > Cmdlet开发与学习(二)

Cmdlet开发与学习(二)

      继续上一篇的内容,既然已经定义好了命令,那么我们还可以参数绑定,定义自己的参数对象。

      3.定义属性,即cmdlet参数对象

      参数绑定时基于cmdlet元数据进行的,cmdlet元数据是在命令发现过程中得到的。首先,基于cmdlet的类型(包括可执行程序,脚本文件,内置函数等),PowerShell实例化一个cmdlet。然后,通过查询cmdlet元数据中的参数信息,判断参数列表是否合法,或者,该命令参数是否需要参数值。

      参数绑定的实现相当简单,只需要对属性加上Parameter标示符即可。

 1     [Cmdlet(VerbsCommon.Get,"SQLServerBackupFile")]
 2     public class GetSQLServerBackup : PSCmdlet
 3     {
 4         private string path;
 5 
 6         [Parameter]
 7         public string Path
 8         {
 9             get { return path; }
10             set { path = value; }
11         }
12         
13     }

     

      4.重写cmdlet记录处理的方法

      参数绑定时,cmdlet类实例化得到一个实例对象。调用这个cmdlet实例对象的方法,就完成了命令调用过程。这些方法包括BeginProcessing(), ProcessRecord(), 和EndProcessing()

       BeginProcessing: 该方法包含只在命令初始化时执行一次的操作。

       ProcessRecord: 该方法被重写用来实现任务的主体。

       EndProcessing: 该方法用来包含实现收尾工作的操作。

 

       通常,需要在cmdlet类中重写这三个函数,但是并非必须的,也有cmdlet类只实现这三个方法中的一个或两个。

       

 1     [Cmdlet(VerbsCommon.Get,"SQLServerBackupFile")]
 2     public class GetSQLServerBackup : PSCmdlet
 3     {
 4         private string path;
 5 
 6         [Parameter]
 7         public string Path
 8         {
 9             get { return path; }
10             set { path = value; }
11         }
12 
13         protected override void ProcessRecord()
14         {
15             if (Directory.Exists(path))
16             {
17 
18             }
19             else
20             {
21 
22             }
23         }
24     }