#提供程序与驱动器
PowerShell 通过提供程序(Provider)访问不同的数据存储,并把它们以驱动器(Drive)的形式呈现出来。这样可以使用统一的路径语法操作文件系统、环境变量、注册表等数据。
#基本概念
- 提供程序:把某种数据存储适配为 PowerShell 可访问的格式,例如文件系统、环境变量、注册表。
- 驱动器:提供程序上的一个访问入口,通常使用
名称:表示,例如C:、Env:、HKLM:。 - 路径:由驱动器名和路径组成,例如
C:\Users、Env:PATH、HKLM:\SOFTWARE。
#查看提供程序和驱动器
列出当前可用的提供程序:
> Get-PSProvider
列出当前会话中的驱动器:
> Get-PSDrive
按提供程序筛选驱动器:
> Get-PSDrive -PSProvider FileSystem
> Get-PSProvider | Select-Object -Property Name, Capabilities
#常见提供程序与驱动器
| 提供程序 | 驱动器示例 | 说明 | 平台 |
|---|---|---|---|
FileSystem | C:、/ | 文件和目录 | 全部平台 |
Environment | Env: | 环境变量 | 全部平台 |
Variable | Variable: | PowerShell 变量 | 全部平台 |
Registry | HKLM:、HKCU: | Windows 注册表 | 仅 Windows |
Certificate | Cert: | 证书存储 | 仅 Windows |
#使用驱动器
访问环境变量驱动器:
> Get-ChildItem -Path Env:
> $env:PATH
访问文件系统:
> Get-ChildItem -Path /tmp
> Set-Location -Path /tmp
在 Windows 上访问注册表或证书:
> Get-ChildItem -Path HKLM:\SOFTWARE
> Get-ChildItem -Path Cert:\CurrentUser\My
#创建自定义驱动器
New-PSDrive 可以把某个路径映射为新的驱动器名称:
> New-PSDrive -Name docs -PSProvider FileSystem -Root /home/user/Documents
> Get-ChildItem -Path docs:\
> Remove-PSDrive -Name docs
- 默认创建的驱动器只在当前会话中有效,关闭会话后消失。
- 需要持久映射时使用
-Persist,该参数主要用于 Windows 上的文件系统映射。
#跨平台差异
FileSystem、Environment、Variable等提供程序在 Windows、Linux 和 macOS 上都可用。- Windows 使用盘符路径(如
C:\Users),Linux 和 macOS 使用以/开头的路径。 - 路径分隔符不同,拼接路径时建议使用
Join-Path。 Registry、Certificate属于 Windows 专有内容,跨平台脚本应避免依赖它们。
#注意事项
- 驱动器名称不区分大小写。
- 使用
Get-ChildItem Env:可以像浏览目录一样浏览环境变量。 - 跨平台脚本应优先使用
$HOME、Join-Path等可移植的路径写法。