什么是PowerShell Cmdlet?

2024 年 8 月 29 日 | 阅读 3 分钟

Cmdlet '发音为command-lets' 是在PowerShell环境中使用的轻量级命令。 这些是PowerShell环境中的特殊命令,用于实现特殊功能。 Cmdlet遵循'动词-名词'模式,例如'set-childItem'。

Windows PowerShell运行时在命令行提供的自动化脚本的上下文中调用这些命令。 它还通过Windows PowerShell应用程序编程接口API以编程方式调用它们。

Cmdlets

PowerShell中的cmdlet执行操作,并将Microsoft .NET framework对象返回到管道中的下一个命令。 Cmdlet可以接收对象作为输入,也可以将其结果作为对象输出,这使得它们适合用作管道中的接收者。

如果你编写一个cmdlet,你必须实现一个cmdlet类,该类派生自两个专门的cmdlet基类之一。 派生类必须

  • 声明一个属性,该属性将派生类标识为cmdlet。
  • 定义用属性装饰的公共属性,这些属性将公共属性标识为cmdlet的参数。
  • 要处理记录,它会覆盖一个或多个输入处理方法。
    可以通过使用Import-Module cmdlet直接加载包含该类的程序集,或者我们可以创建一个主机应用程序,该应用程序通过使用System.Management.Automation.Runspaces.Initialsessionstate API加载该程序集。 这两种方法都提供了对cmdlet功能的编程和命令行访问。

Cmdlet术语

在Windows PowerShell cmdlet中经常使用的术语如下:

Cmdlet属性

Windows PowerShell定义了多个属性,用于向cmdlet添加常用功能。 它包括cmdlet属性,该属性将Microsoft .NET framework类标识为cmdlet类。

Cmdlet参数

它提供了一种机制,允许cmdlet访问输入。 参数可以直接从命令行接受输入,也可以接受通过管道传递到cmdlet的对象。

参数集

一组参数在同一命令中用于执行特定操作。 PowerShell中的cmdlet可以有多个参数集,但每个参数集必须至少有一个唯一参数。

Windows PowerShell使用参数集允许你编写一个可以为不同场景执行不同操作的单个cmdlet。 参数集将允许你向用户公开不同的参数,并且基于参数,它将返回用户指定的不同信息。

动态参数

动态参数在运行时添加到cmdlet。 通常,当另一个参数的参数设置为特定值时,这些参数将添加到cmdlet。

输入处理方法

输入处理方法允许cmdlet执行输入处理,预处理和后处理的操作。 cmdlet使用来处理它作为输入接收的记录的那些方法。 输入处理方法包括System.Management.Automation.Cmdlet.EndProcessing方法,System.Management.Automation.Cmdlet.ProcessRecord methodSystem.Management.Automation.Cmdlet.BeginProcessing方法。

交易

命令的逻辑组被视为单项任务。 如果组中的任何命令失败,则任务将自动失败。 用户可以选择拒绝或接受在事务中执行的操作。 Windows PowerShell 2.0版中引入了对事务的支持。

Cmdlet与其他命令的区别

cmdlet在以下方面与其他命令shell环境中的命令不同:

  • 通常,命令不支持其解析,输出格式化或错误呈现。 Windows PowerShell运行时处理这三个(解析,输出格式化或错误呈现)。
  • cmdlet处理来自管道的输入对象,而不是来自字符流,并且cmdlet将输出对象传递到管道。
  • Cmdlet一次处理一个对象,因此它们是面向记录的。
  • Cmdlet是.NET framework类的实例,因此它们不是独立的执行文件。