在系统安装完成后,默认存在以下的Provider,帮助我们实现对象的管理,接下来我们来分享下系统内置的Provider。
别名是PowerShell中一类用来标记其他命令的对象,通常来说是为了标记命令中比较长的函数或命令,也可以在PowerShell 指定CMD Shell中命令的别名。PowerShell命令或函数的别名都会在别名Provider中存在,进入别名Provider执行如图 3.3所示的命令。
图3.3 进入别名Provider
进入Alias的Provider 之后,通过执行图3.4所示的Get-ChildItem 能够查到Alias Provider 中所有可用Alias。
图3.4 获取当前可用的Alias别名
在我当前系统中存在162个别名,别名的数据依据不同版本的操作系统安装软件或模块的数量增加而增加。相信在你系统看到的PowerShell别名的数量一定不同于图3.5所示的数量。
图3.5 在当前系统的别名数量
证书Certificate 是进行证书操作的Provider,我们通常的证书存储、添加及删除可以通过这个Provider 来实现,可以通过如下的命令进入证书的Provider,如图3.6所示为进入证书Provider的方式。
图3.6 进入证书Provider
在进入证书的Provider 之后,可以通过执行如图3.7所示的命令获取当前证书Provider的用户和计算机证书存储节点。
图3.7 获取当前的证书路径
如果希望获取到当前的用户证书和计算机证书节点的证书,可以通过以下命令来获取到相应的计算机中所存储的证书对象,执行结果如图3.8所示。
图3.8 PowerShell 获取证书指纹
环境变量是当前系统的各类不同的系统环境变量,包含操作系统名称、系统版本和临时目录环境等,我们可以通过如图3.9所示的命令进入环境变量Provider。
图3.9 进入环境变量Provider
在环境变量的Provider中如果想获取系统中所有必要的变量,可以通过如图3.10所示的命令来实现环境变量的查询。
图3.10 查询当前系统的环境变量
文件系统是目前系统使用最为频繁的Provider,进行文件内容读取和写入,都需要使用文件Provider提供的对象进行交互。所有PowerShell窗口默认进入的Provider都是文件系统Provider,进入文件系统的Provider也非常简单,直接使用图3.11所示的命令就可以进入文件系统的C盘。
图3.11 进入文件Provider
在文件系统中,同样可以使用Get-ChildItem获取图3.12所示当前环境文件对象中的文件对象集合。
图3.12 获取当前目录子集
功能函数指的是当前PowerShell中的功能函数,不同于PowerShell常规功能的Cmdlet,功能函数是一组以执行某个特定任务的代码集合。Function Provider的内容是扁平的,不像文件有二级目录功能,可以通过图3.13所示的命令进入Function 的Provider中。
图3.13 进入PowerShell Function
如果希望了解在当前系统有哪些Function可以供调用,同样可以执行图3.14所示的命令Get-ChildItem 来获取可用的Function功能函数。
图3.14 获取当前系统中可用的Function功能函数
当前获取到的函数均可以直接在PowerShell环境中执行,PowerShell中可以执行的功能函数将在加载模块或管理单元后更新在Function的Provider中。
注册表也是管理员常用的管理工具之一,作为服务器管理底层的组件,注册表的键值提供系统内所有的软件、硬件、程序、配置等信息来源,而且在注册表的Provider下,管理员也可以进行注册表键值的创建、修改、删除等操作。注册表的Provider一共存在两个入口,分别对应当前计算机和当前用户,图3.15所示为进入注册表Provider的方法。
· HKLM:获取当前计算机注册设定。
· HKCU:获取当前用户注册表设定。
图3.15 进入注册表方法
进入注册表Provider之后,执行如图3.16所示的命令,即可查询出当前键路径下的键值或键值对。
图3.16 当前键路径下的键值对获取
在注册表的Provider中,可以通过PowerShell命令完成注册表键值的创建、修改和删除等操作。
变量Provider 获取当前系统中各类变量的值,除了系统环境变量的参数和值之外,变量的值还涵盖了PowerShell的首选项配置和在当前Session所创建的变量。变量的Provider 进入方式如图3.17所示。
图3.17 进入变量Provider
变量的Provider 同样没有子集,只有单一层级。可以通过图3.18所示的方式进入变量的Provider进行数据获取。
图3.18 当前系统的变量值
WS-Man的全称是Web Service Management,WS-Man的管理服务是当前系统中的Web服务管理界面。早期系统会通过WMI进行数据获取,主要是采用了RPC协议,RPC协议采用了135端口进行数据获取,微软为了规避135端口获取数据带来的风险,推出WS-Man,利用连接主机的Web服务来进行服务器管理,通过WS-Man除可以简化服务器管理之外,还提高了服务器管理的安全性。通过图3.19所示的PowerShell命令进入WS-Man的管理界面。
图3.19 进入WS-Man的Provider
想了解WS-Man的详细设置,同样可以通过Get-ChildItem获取相关的设置,执行如图3.20所示的Get-ChildItem 命令,可以得到当前WS-Man的可配置项。
图3.20 获取当前WS-Man的可配置项
以上介绍就是系统内置的几个Provider,当然在实际的使用场景中,不同的模块导入将会有不同的Provider载入。