[玩转系统] Cmdlet 概述
作者:精品下载站 日期:2024-12-14 02:55:12 浏览:15 分类:玩电脑
Cmdlet 概述
cmdlet 是在 PowerShell 环境中使用的轻量级命令。 PowerShell 运行时在命令行提供的自动化脚本上下文中调用这些 cmdlet。 PowerShell 运行时还通过 PowerShell API 以编程方式调用它们。
cmdlet
Cmdlet 执行操作并通常将 Microsoft .NET 对象返回到管道中的下一个命令。 cmdlet 是参与 PowerShell 管道语义的单个命令。这包括二进制 (C#) cmdlet、高级脚本函数、CDXML 和工作流。
此 SDK 文档介绍了如何创建用 C# 编写的二进制 cmdlet。有关基于脚本的 cmdlet 的信息,请参阅:
- about_功能_高级
- about_Functions_CmdletBindingAttribute
- about_Functions_Advanced_Methods
要创建二进制 cmdlet,您必须实现一个派生自两个专用 cmdlet 基类之一的 cmdlet 类。派生类必须:
- 声明一个将派生类标识为 cmdlet 的属性。
- 定义用将公共属性标识为 cmdlet 参数的特性修饰的公共属性。
- 重写一种或多种输入处理方法来处理记录。
您可以使用 Import-Module cmdlet 直接加载包含该类的程序集,也可以使用 System.Management.Automation.Runspaces.Initialsessionstate API 创建加载该程序集的主机应用程序。这两种方法都提供对 cmdlet 功能的编程和命令行访问。
Cmdlet 术语
PowerShell cmdlet 文档中经常使用以下术语:
Cmdlet 属性
用于将 cmdlet 类声明为 cmdlet 的 .NET 属性。尽管 PowerShell 使用其他几个可选属性,但 Cmdlet 属性是必需的。有关此属性的详细信息,请参阅 Cmdlet 属性声明。
Cmdlet 参数
定义可供用户或运行 cmdlet 的应用程序使用的参数的公共属性。 Cmdlet 可以具有必需参数、命名参数、位置参数和开关 参数。开关参数允许您定义仅在调用中指定参数时才评估的参数。有关不同类型参数的详细信息,请参阅 Cmdlet 参数。
参数设定
可在同一命令中使用的一组参数来执行特定操作。一个 cmdlet 可以有多个参数集,但每个参数集必须至少有一个唯一的参数。良好的 cmdlet 设计强烈建议唯一参数也是必需参数。有关参数集的详细信息,请参阅 Cmdlet 参数集。
动态参数
在运行时添加到 cmdlet 的参数。通常,当另一个参数设置为特定值时,动态参数会添加到 cmdlet。有关动态参数的详细信息,请参阅 Cmdlet 动态参数。
输入处理方式
System.Management.Automation.Cmdlet 类提供以下用于处理记录的虚拟方法。所有派生 cmdlet 类必须重写前三个方法中的一个或多个:
- System.Management.Automation.Cmdlet.BeginProcessing:用于为 cmdlet 提供可选的一次性预处理功能。
- System.Management.Automation.Cmdlet.ProcessRecord:用于为 cmdlet 提供逐条记录的处理功能。 System.Management.Automation.Cmdlet.ProcessRecord 方法可能会被调用任意多次,也可能根本不会调用,具体取决于 cmdlet 的输入。
- System.Management.Automation.Cmdlet.EndProcessing:用于为 cmdlet 提供可选的一次性后处理功能。
- System.Management.Automation.Cmdlet.StopProcessing:用于在用户异步停止 cmdlet 时停止处理(例如,通过按 CTRL+C)。
有关这些方法的详细信息,请参阅 Cmdlet 输入处理方法。
实现 cmdlet 时,必须至少重写其中一种输入处理方法。通常,ProcessRecord() 是您要重写的方法,因为 cmdlet 处理的每条记录都会调用它。相反,BeginProcessing()方法和EndProcessing()方法被调用一次,以执行记录的预处理或后处理。有关这些方法的更多信息,请参阅输入处理方法。
应该处理特征
PowerShell 允许您创建 cmdlet,在 cmdlet 对系统进行更改之前提示用户提供反馈。要使用此功能,当您声明 Cmdlet 属性时,cmdlet 必须声明它支持 ShouldProcess
功能,并且 cmdlet 必须调用 System.Management.Automation.Cmdlet.ShouldProcess 和 System.Management.Automation输入处理方法中的 .Cmdlet.ShouldContinue 方法。有关如何支持 ShouldProcess
功能的更多信息,请参阅请求确认。
交易
被视为单个任务的逻辑命令组。如果组中的任何命令失败,任务将自动失败,并且用户可以选择接受或拒绝事务中执行的操作。要参与事务,cmdlet 必须在声明 Cmdlet 属性时声明它支持事务。 Windows PowerShell 2.0 中引入了对事务的支持。有关事务的更多信息,请参阅如何支持事务。
Cmdlet 与命令有何不同
Cmdlet 与其他命令 shell 环境中的命令有以下不同之处:
- Cmdlet 是 .NET 类的实例;它们不是独立的可执行文件。
- 只需十几行代码即可创建 Cmdlet。
- Cmdlet 通常不会进行自己的解析、错误呈现或输出格式化。解析、错误呈现和输出格式由 PowerShell 运行时处理。
- Cmdlet 处理来自管道而不是来自文本流的输入对象,并且 cmdlet 通常将对象作为输出传递到管道。
- Cmdlet 是面向记录的,因为它们一次处理一个对象。
Cmdlet 基类
Windows PowerShell 支持从以下两个基类派生的 cmdlet。
大多数 cmdlet 都基于派生自 System.Management.Automation.Cmdlet 基类的 .NET 类。从此类派生允许 cmdlet 使用 Windows PowerShell 运行时的最小依赖项集。这有两个好处。第一个好处是 cmdlet 对象更小,并且您不太可能受到 PowerShell 运行时更改的影响。第二个好处是,如果需要,您可以直接创建 cmdlet 对象的实例,然后直接调用它,而不是通过 PowerShell 运行时调用它。
更复杂的 cmdlet 基于派生自 System.Management.Automation.PSCmdlet 基类的 .NET 类。从此类派生后,您可以更多地访问 PowerShell 运行时。此访问权限允许您的 cmdlet 调用脚本、访问提供程序以及访问当前会话状态。 (要访问当前会话状态,您需要获取并设置会话变量和首选项。)但是,从此类派生会增加 cmdlet 对象的大小,这意味着您的 cmdlet 与当前版本的 PowerShell 运行时耦合更紧密。
通常,除非您需要对 PowerShell 运行时的扩展访问权限,否则应从 System.Management.Automation.Cmdlet 类派生。但是,PowerShell 运行时具有用于执行 cmdlet 的广泛日志记录功能。如果您的审核模型依赖于此日志记录,则可以通过派生自 System.Management.Automation.PSCmdlet 类来阻止从另一个 cmdlet 中执行您的 cmdlet。
Cmdlet 属性
PowerShell 定义了多个 .NET 属性,这些属性用于管理 cmdlet 并指定 PowerShell 提供的以及 cmdlet 可能需要的常用功能。例如,属性用于将类指定为 cmdlet、指定 cmdlet 的参数以及请求输入验证,以便 cmdlet 开发人员不必在其 cmdlet 代码中实现该功能。有关属性的更多信息,请参阅 PowerShell 属性。
Cmdlet 名称
PowerShell 使用动词和名词名称对来命名 cmdlet。例如,PowerShell 中包含的 Get-Command
cmdlet 用于获取在命令 shell 中注册的所有 cmdlet。动词标识 cmdlet 执行的操作,名词标识 cmdlet 执行其操作的资源。
这些名称是在 .NET 类声明为 cmdlet 时指定的。有关如何将 .NET 类声明为 cmdlet 的详细信息,请参阅 Cmdlet 属性声明。
编写 Cmdlet 代码
本文档提供了两种方法来了解 cmdlet 代码的编写方式。如果您希望查看没有太多解释的代码,请参阅 Cmdlet 代码示例。如果您希望了解有关代码的更多说明,请参阅 GetProc 教程、StopProc 教程或 SelectStr 教程主题。
有关编写 cmdlet 的指南的详细信息,请参阅 Cmdlet 开发指南。
参见
PowerShell Cmdlet 概念
编写 PowerShell Cmdlet
PowerShell SDK
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag