继续上一篇的内容,既然已经定义好了命令,那么我们还可以参数绑定,定义自己的参数对象。
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 }