[玩转系统] 扩展类型系统概述
作者:精品下载站 日期:2024-12-14 02:30:20 浏览:13 分类:玩电脑
扩展类型系统概述
PowerShell 使用其 PSObject 对象以两种方式扩展对象类型。首先,PSObject 对象提供了一种显示特定对象类型的不同视图的方法。这被称为显示对象的适应视图。其次,PSObject 对象提供了一种向现有对象添加成员的方法。通过包装现有对象(称为基础对象),PSObject 对象提供了一个扩展类型系统 (ETS),脚本和 cmdlet 开发人员可以使用该系统在 shell 中操作 .NET 对象。
Cmdlet 和脚本开发问题
ETS 解决了两个基本问题:
首先,某些 .NET 对象不具有充当 cmdlet 之间的数据所需的默认行为。
- 某些 .NET 对象是“元”对象(例如:WMI 对象、ADO 对象和 XML 对象),其成员描述它们包含的数据。然而,在脚本环境中,最有趣的是所包含的数据,而不是所包含数据的描述。 ETS 通过引入适配器的概念解决了这个问题,适配器使底层 .NET 对象适应预期的默认语义。
- 某些 .NET 对象成员的命名不一致、提供的公共成员集不足或提供的功能不足。 ETS 通过引入使用附加成员扩展 .NET 对象的功能解决了这个问题。
其次,PowerShell 脚本语言是无类型的,因为不需要将变量声明为特定类型。也就是说,脚本开发人员创建的变量本质上是无类型的。然而,PowerShell 系统是“类型驱动的”,因为它依赖于类型名称来进行基本操作(例如输出结果或排序)。
因此,脚本开发人员必须能够声明其中一个变量的类型,并构建自己的一组动态类型“对象”,其中包含属性和方法,并且可以参与类型驱动系统。 ETS 通过为脚本语言提供一个公共对象来解决这个问题,该对象能够动态声明其类型并动态添加成员。
从根本上讲,ETS 通过提供 PSObject 对象解决了前面提到的问题,该对象充当脚本语言访问所有对象的基础,并为 cmdlet 开发人员提供标准抽象。
Cmdlet 开发人员
对于 cmdlet 开发人员,ETS 提供以下支持:
- 使用 PSObject 对象以通用方式处理对象的抽象。如果需要,ETS 还提供钻取这些抽象的能力。
- 使用一组众所周知的扩展成员为对象类型的格式化、排序、序列化和其他系统操作创建默认行为的机制。
- 使用与使用 LanguagePrimitives 对象的脚本语言相同的语义对任何对象进行操作的方法。
- 动态“键入”哈希表的方法,以便系统的其余部分可以有效地对其进行操作。
脚本开发人员
对于脚本开发人员,ETS 提供以下支持:
- 能够使用相同的语法 (
$a.x
) 引用任何基础对象类型。 - 访问超出由 PSObject 对象提供的抽象的能力(例如仅访问适应的成员,或访问基础对象本身)。
- 能够定义控制对象实例或类型的格式化、排序、序列化和其他操作的众所周知的成员。
- 将对象命名为特定类型的方法,从而控制其基于类型的成员的继承。
- 添加、删除和修改扩展成员的能力。
- 如果需要的话,能够操纵PSObject对象本身。
PSObject 类
PSObject 对象是脚本语言访问所有对象的基础,并为 cmdlet 开发人员提供标准抽象。它包含一个基础对象(.NET 对象)和任何实例成员(成员,特别是扩展成员,存在于特定对象实例上,但不一定存在于相同类型的其他对象上)。根据基础对象的类型,PSObject 对象还可能提供对改编成员以及任何基于类型的扩展成员的隐式和显式访问。
PSObject 对象提供以下机制:
- 能够构造带有或不带有基础对象的PSObject。
- 能够通过通用查找算法访问每个构造的 PSObject 对象的所有成员,并能够在需要时覆盖该算法。
- 能够获取和设置所构造的 PSObject 对象的类型名称,以便脚本和 cmdlet 可以通过相同的类型名称引用类似的 PSObject 对象,而不管类型如何他们的基础对象。
如何构造 PSObject
以下列表描述了创建 PSObject 对象的方法:
- 调用 PSObject .#ctor 构造函数会创建一个新的 PSObject 对象,其基础对象为 PSCustomObject。这种类型的基础对象表明PSObject对象没有有意义的基础对象。但是,具有此类基本对象的 PSObject 对象确实提供了一个属性包,cmdlet 开发人员可以通过添加扩展成员发现该属性包很有帮助。
开发人员还可以指定对象类型名称,这允许该对象与具有相同类型名称的其他 PSObject 对象共享其扩展成员。
调用 PSObject .#ctor(System.Object) 构造函数创建一个新的 PSObject 对象,其基础对象为 System.Object 类型。
在这种情况下,创建的对象的类型名称是基础对象的派生层次结构的集合。例如,包含 ProcessInfo 基础对象的 PSObject 的类型名称将包括以下名称:
- System.Diagnostics.Process
- System.ComponentModel.Component
- 系统.MarshalByRefObject
- 系统对象
调用 PSObject .AsPSObject(System.Object) 方法会根据提供的对象创建一个新的 PSObject 对象。
如果提供的对象属于 System.Object 类型,则提供的对象将用作新 PSObject 对象的基础对象。如果提供的对象已经是 PSObject 对象,则按原样返回提供的对象。
基础成员、改编成员和扩展成员
从概念上讲,ETS 使用以下术语来显示基础对象的原始成员与 PowerShell 添加的成员之间的关系。有关 PSObject 对象使用的特定类型成员的详细信息,请参阅 PSObject 类。
基础对象成员
如果在构造 PSObject 对象时指定了基础对象,则可以通过 Members 属性使用基础对象的成员。
改编成员
当基础对象是元对象(以通用方式包含数据,其属性“描述”其所包含的数据)时,ETS 会将这些对象调整为允许通过改编的成员直接访问数据的视图。 >PSObject 对象。适应成员和基础对象成员可通过 Members 属性访问。
扩展会员
除了从基础对象提供的成员或由 PowerShell 创建的改编成员之外,PSObject 还可以定义扩展成员,这些扩展成员使用在脚本编写中有用的附加信息来扩展原始基础对象。环境。
例如,PowerShell 提供的所有核心 cmdlet(例如 Get-Content 和 Set-Content cmdlet)都采用路径参数。为了确保这些 cmdlet 和其他 cmdlet 可以针对不同类型的对象工作,可以将 Path 成员添加到这些对象中,以便它们都以通用方式声明其信息。此扩展 Path 成员确保 cmdlet 可以针对所有这些类型工作,即使基类可能没有 Path 成员也是如此。
扩展成员、改编成员和基础对象成员都可以通过 Members 属性访问。
猜你还喜欢
- 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