[玩转系统] 创建基本 Windows PowerShell 提供程序
作者:精品下载站 日期:2024-12-14 20:29:05 浏览:12 分类:玩电脑
创建基本 Windows PowerShell 提供程序
本主题是学习如何创建 Windows PowerShell 提供程序的起点。这里描述的基本提供程序提供了启动和停止提供程序的方法,尽管此提供程序不提供访问数据存储或获取或设置数据存储中的数据的方法,但它确实提供了所有提供商。
如前所述,此处描述的基本提供程序实现了启动和停止提供程序的方法。 Windows PowerShell 运行时调用这些方法来初始化和取消初始化提供程序。
笔记
您可以在 Windows PowerShell 提供的 AccessDBSampleProvider01.cs 文件中找到此提供程序的示例。
定义 Windows PowerShell 提供程序类
创建 Windows PowerShell 提供程序的第一步是定义其 .NET 类。此基本提供程序定义了一个名为 AccessDBProvider
的类,该类派生自 System.Management.Automation.Provider.Cmdletprovider 基类。
建议您将提供程序类放置在 API 命名空间的 Providers
命名空间中,例如 xxx.PowerShell.Providers。此提供程序使用 Microsoft.Samples.PowerShell.Provider
命名空间,所有 Windows PowerShell 提供程序示例都在其中运行。
笔记
Windows PowerShell 提供程序的类必须显式标记为公共。未标记为公共的类将默认为内部类,并且 Windows PowerShell 运行时不会找到它。
以下是这个基本提供程序的类定义:
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider
在类定义之前,必须使用语法 [CmdletProvider()] 声明 System.Management.Automation.Provider.Cmdletproviderattribute 属性。
如果需要,您可以设置属性关键字来进一步声明该类。请注意,此处声明的 System.Management.Automation.Provider.Cmdletproviderattribute 属性包括两个参数。第一个属性参数指定提供程序的默认友好名称,用户可以稍后修改该名称。第二个参数指定提供程序在命令处理期间向 Windows PowerShell 运行时公开的 Windows PowerShell 定义的功能。提供程序功能的可能值由 System.Management.Automation.Provider.Providercapability 枚举定义。因为这是一个基础提供程序,所以它不支持任何功能。
笔记
Windows PowerShell 提供程序的完全限定名称包括程序集名称和 Windows PowerShell 在提供程序注册时确定的其他属性。
定义特定于提供者的状态信息
System.Management.Automation.Provider.Cmdletprovider 基类和所有派生类都被视为无状态,因为 Windows PowerShell 运行时仅根据需要创建提供程序实例。因此,如果您的提供程序需要对提供程序特定的数据进行完全控制和状态维护,则它必须从 System.Management.Automation.Providerinfo 类派生一个类。您的派生类应定义维护状态所需的成员,以便在 Windows PowerShell 运行时调用 System.Management.Automation.Provider.Cmdletprovider.Start* 方法来初始化提供程序时可以访问提供程序特定的数据。
Windows PowerShell 提供程序还可以维护基于连接的状态。有关维护连接状态的更多信息,请参阅创建 PowerShell 驱动器提供程序。
初始化提供者
为了初始化提供程序,Windows PowerShell 运行时会在 Windows PowerShell 启动时调用 System.Management.Automation.Provider.Cmdletprovider.Start* 方法。在大多数情况下,您的提供程序可以使用此方法的默认实现,该方法仅返回描述您的提供程序的 System.Management.Automation.Providerinfo 对象。但是,如果要添加其他初始化信息,则应实现自己的 System.Management.Automation.Provider.Cmdletprovider.Start* 方法,该方法返回传递的 System.Management.Automation.Providerinfo 对象的修改版本给您的提供商。通常,此方法应返回传递给它的提供的 System.Management.Automation.Providerinfo 对象或包含其他初始化信息的修改后的 System.Management.Automation.Providerinfo 对象。
此基本提供程序不会重写此方法。但是,以下代码显示了此方法的默认实现:
提供者可以维护提供者特定信息的状态,如定义提供者特定数据状态中所述。在这种情况下,您的实现必须重写 System.Management.Automation.Provider.Cmdletprovider.Start* 方法以返回派生类的实例。
启动动态参数
System.Management.Automation.Provider.Cmdletprovider.Start* 方法的提供程序实现可能需要其他参数。在这种情况下,提供程序应重写 System.Management.Automation.Provider.Cmdletprovider.Startdynamicparameters* 方法并返回一个对象,该对象具有类似于 cmdlet 类或 System.Management.Automation.Runtimedefineparameterdictionary 对象的解析属性的属性和字段。
此基本提供程序不会重写此方法。但是,以下代码显示了此方法的默认实现:
取消初始化提供者
要释放 Windows PowerShell 提供程序使用的资源,您的提供程序应实现其自己的 System.Management.Automation.Provider.Cmdletprovider.Stop* 方法。此方法由 Windows PowerShell 运行时调用,以在会话结束时取消初始化提供程序。
此基本提供程序不会重写此方法。但是,以下代码显示了此方法的默认实现:
代码示例
有关完整的示例代码,请参阅 AccessDbProviderSample01 代码示例。
测试 Windows PowerShell 提供程序
在 Windows PowerShell 提供程序注册到 Windows PowerShell 后,您可以通过在命令行上运行支持的 cmdlet 来测试它。对于此基本提供程序,运行新 shell 并使用 Get-PSProvider
cmdlet 检索提供程序列表并确保 AccessDb 提供程序存在。
Get-PSProvider
将出现以下输出:
Name Capabilities Drives
---- ------------ ------
AccessDb None {}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess {C, Z}
Function ShouldProcess {function}
Registry ShouldProcess {HKLM, HKCU}
参见
创建 Windows PowerShell 提供程序
设计您的 Windows PowerShell 提供程序
猜你还喜欢
- 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