• Windows PowerShell 学习之——Cmdlet处理生命周期


    这一次介绍一下Cmdlet处理过程的生命周期

    总共分为六个部分

    1.概述

    2. 命令行输入绑定参数(parameters)

    3. 开始指令处理

    4. 接受管道输入绑定参数

    5. 处理记录

    6. 处理记录

    1. 概述

    下图展示Windows PowerShell怎样处理一个管道请求指令。

    这个流程包括:

    • 指令参数(parameters)初始绑定阶段
    • 指令处理开始
    • 管道参数(parameters)二次绑定阶段
    • 记录处理
    • 指令处理结束

    2. 命令行输入绑定参数(parameters)

      第一次绑定期间,Windows PowerShell运行时使用它的管道处理器绑定参数(Arguments)到参数(parameters)。参数(arguments)可能被用户以交互方式指定并作为命令行输入,也可能是被宿主程序以编程方式指定。管道处理器触发指令处理器,指令处理器为每一个受影响指令执行初始绑定。

      对于每一个指令,按照下面顺序执行第一次绑定阶段:

        a. 绑定名称参数

        b. 绑定位置参数

        c. 绑定公共参数

        d. 绑定参数支持调用ShouldProcess方法

        c. 绑定名称动态参数

            绑定位置动态参数

      绑定期间,管道处理器是使用参数的元数据、扩展类型系统(ETS)的类型定义和强制类型转换的参数值。强制类型转换过程中一个特定值,这个特定值是.NET Framework类型变成另外一个类型的参数值。

      假如管道处理器完成处理过程,但发现管道收命令行输入任何未绑定的参数指令,此时管道处理就会失败,处理过程中断。如果这些指令的所有参数绑定成功,管道处理器开始记录处理。

    3. 开始指令处理

      所有命令行输入的参数都被绑定了他们的值,这个时候管道处理器开始指令处理。这样,处理器开始调用第一个指令——BeginProcessing方法,并把这个指令发送给管道。要是只是使用这个方法的默认实现,他什么事情也不会做。然而,如果重写这个方法,就会执行该方法的多有处理。

      当管道处理器从一个方法返回,然后调用在管道中区域的指令方法,知道所有的方法都被调用。如果一个指令在管道出现多次,每一次都被作为一个单独的方法处理。

    4. 接受管道输入绑定参数

      所有的指令被处理后,管道处理器现在进入外一个绑定阶段。在该操作中,处理器绑定值到每一个通过管道输入的指令上。

      对于接受管道输入的每一个指令,处理器绑定值到这些参数上要按照下面的顺序:

        a. 绑定指令定义管道参数

        b. 绑定动态管道参数

      如果管道处理器发现任何接受的管道输入指令没有绑定参数,管道处理失败,处理中断。如果所有参数成功绑定,管道处理器开始处理记录。

    5. 处理记录

      所有接受管道输入的参数都被绑定了值之后,管道处理器开始处理记录。管道处理器在管道中开始第一个指令。

      以下是管道处理器记录处理的步骤:

        a. 确定是否所有强制参数值都是可用,如果存在不可用的,失败。

        b. 确定单一参数集被定义,如果不是,失败。

        c. 在接下来的指令中调用ProcessRecord方法。要是只是使用这个方法的默认实现,他什么事情也不会做。如果重写了这个方法,将会按照新方法处理。

        d. 当管道处理器从ProcessRecord方法返回时,设置所有管道参数的初始值。

        e .检查更多管道对象。

        f. 如果存在更多地对象,再次绑定管道参数。

        g. 重复上面步骤,知道所有管道中的的指令记录都被处理。

      管道中所有指令的记录已经被处理,最后结束指令处理。

    6. 结束指令处理

      所有的记录已经被处理,管道处理器告诉后续指令处理器在相关的指令中调用EndProcessing方法。要是只是使用这个方法的默认实现,他什么事情也不会做。如果重写了这个方法,将会按照新方法处理。

  • 相关阅读:
    概述反射和序列化
    读书笔记6pandas简单使用
    读书笔记5基于matplotlib画图
    读书笔记4数据的读入和保存
    读书笔记3数组的一些常用函数
    introduction to python for statistics,analysis笔记3
    introduction to python for statistics,analysis笔记2
    introduction to anaconda
    图像的线性空间滤波matlab实现
    C-I/O操作函数详解
  • 原文地址:https://www.cnblogs.com/BoyceYang/p/3135954.html
Copyright © 2020-2023  润新知