[PowerShell入门]提供程序和驱动器

提供程序和驱动器

PowerShell系列好久没更新了,主要原因是有些主题涉及的内容太多了,一时间不知道怎么整理成文章发出来。近期刚好因为一点小问题又折腾了一下PowerShell,就顺便整理出这么一篇文章,介绍一下PowerShell中很重要的提供程序和驱动器。

提供程序(Provider)

Provider这个词在很多中文资料中被翻译为“提供程序”,刚开始学习PowerShell时看到这个词的我是这样子的:

要理解这个概念,其实只要读一读它的英文名就可以了。Provider,提供者,提供什么呢?在PowerShell中,Provider提供的是数据。它提供的数据可以是文件,也可以是环境变量,也可以是注册表信息。说到这里你可能还是有点懵(内心:这玩意儿到底嘎哈用的?),不过没关系,你只要记住它是提供数据的就行了,请继续往下读。

驱动器(Drive)

那驱动器又是什么?说到驱动器,大多数人首先会想到的应该是各种“CDEF盘”,不过PowerShell中的驱动器可没有那么简单。如果说提供程序提供了数据,那么驱动器就是提供了索引数据的方式,也可以说驱动器通过一个特定的提供程序连接到存储数据的介质。

举个例子:FileSystem是PowerShell一个内置的提供程序,它提供了文件系统相关的数据,而C盘就是属于FileSystem的一个驱动器,通过C:\path\to\file的形式我们可以索引到提供程序提供的数据(文件或文件夹)。

PowerShell中的驱动器跟提供程序是多对一的关系,就像一个提供文件数据的提供程序可以对应多个文件系统驱动器(CDEF盘)一样。

项(Item)

仔细看看文件系统、注册表、环境变量等数据源的构成,我们能发现其实这些系统之间有很多相似之处:

  • 它们都是树型结构
  • 每一项数据都能对应一个路径,像文件路径和注册表项路径(这个特性是基于其树形结构的)
  • 每一项数据都是由名字、内容和属性构成的

所以PowerShell又引入了另一个概念——项(Item)。PowerShell将提供程序提供的数据抽象为一个个的项(文件是项,文件夹是项,注册表项是项,环境变量也是项),将数据统一以项的形式表现。

PowerShell通过这种形式,将数据以一致的形式公开,这样我们可以以相同的方式对这些不同类型的数据进行管理了!试想一下,你可以用与修改文件内容相同的方式修改环境变量,是不是很有意思呢?

内置提供程序和驱动器

PowerShell内置了以下的提供程序和驱动器:

Provider Drive Data store
Alias Alias: cmdlet别名
Certificate Cert: 数字签名证书
Environment Env: 环境变量
FileSystem * 文件和文件夹
Function Function: PowerShell函数
Registry HKLM:, HKCU: 注册表,其中的两个驱动器HKLM:对应注册表的HKEY_LOCAL_MACHINE,HKCU:对应HKEY_CURRENT_USER
Variable Variable: PowerShell中的变量
WSMan WSMan: WS-Management配置信息

使用这些内置的驱动器,就可以访问并管理提供程序提供的数据了:

PS > Set-Content Env:\Test test
PS > Get-Content Env:\Test
test
PS > Get-Content Variable:\PID
27631

注意路径中驱动器名字要加冒号(:),Windows上的路径分隔符是使用反斜杠(\)的。

相关cmdlet

获取Provider

Get-PSProvider [[-PSProvider] <String[]>] [<CommonParameters>]

使用Get-PSProvider命令用于获取提供程序对象(System.Management.Automation.ProviderInfo)。参数-PSProvider<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值