当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Cmdlet 输入处理方法

作者:精品下载站 日期:2024-12-14 02:54:42 浏览:12 分类:玩电脑

Cmdlet 输入处理方法


Cmdlet 必须重写本主题中描述的一种或多种输入处理方法才能执行其工作。这些方法允许 cmdlet 执行预处理、输入处理和后处理操作。这些方法还允许您停止 cmdlet 处理。有关如何使用这些方法的更详细示例,请参阅 SelectStr 教程。

预处理操作

Cmdlet 应重写 System.Management.Automation.Cmdlet.BeginProcessing 方法,以添加对 cmdlet 稍后将处理的所有记录有效的任何预处理操作。当 PowerShell 处理命令管道时,PowerShell 会为管道中 cmdlet 的每个实例调用此方法一次。有关 PowerShell 如何调用命令管道的详细信息,请参阅 Cmdlet 处理生命周期。

以下代码显示了 BeginProcessing 方法的实现。

protected override void BeginProcessing()
{
  // Replace the WriteObject method with the logic required by your cmdlet.
  WriteObject("This is a test of the BeginProcessing template.");
}

输入处理操作

Cmdlet 可以重写 System.Management.Automation.Cmdlet.ProcessRecord 方法来处理发送到 cmdlet 的输入。当 PowerShell 处理命令管道时,PowerShell 会为 cmdlet 处理的每个输入记录调用此方法。有关 PowerShell 如何调用命令管道的详细信息,请参阅 Cmdlet 处理生命周期。

以下代码显示了 ProcessRecord 方法的实现。

protected override void ProcessRecord()
{
  // Replace the WriteObject method with the logic required by your cmdlet.
  WriteObject("This is a test of the ProcessRecord template.");
}

后处理操作

Cmdlet 应重写 System.Management.Automation.Cmdlet.EndProcessing 方法,以添加对 cmdlet 处理的所有记录有效的任何后处理操作。例如,您的 cmdlet 可能必须在处理完成后清理对象变量。

当 PowerShell 处理命令管道时,PowerShell 会为管道中 cmdlet 的每个实例调用此方法一次。但是,请务必记住,如果 cmdlet 在其输入处理过程中被取消,或者 cmdlet 的任何部分发生终止错误,则 PowerShell 运行时将不会调用 EndProcessing 方法。因此,需要对象清理的 cmdlet 应实现完整的 System.IDisposable 模式(包括终结器),以便运行时可以在处理结束时调用 EndProcessing 和 System.IDisposable.Dispose 方法。有关 PowerShell 如何调用命令管道的详细信息,请参阅 Cmdlet 处理生命周期。

以下代码显示了 EndProcessing 方法的实现。

protected override void EndProcessing()
{
  // Replace the WriteObject method with the logic required by your cmdlet.
  WriteObject("This is a test of the EndProcessing template.");
}

参见

系统.管理.自动化.Cmdlet.BeginProcessing

系统.管理.自动化.Cmdlet.ProcessRecord

系统.管理.自动化.Cmdlet.EndProcessing

SelectStr 教程

系统.IDisposable

Windows PowerShell 外壳 SDK

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯