约 2296 字

约 11 分钟

#提供程序与驱动器

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

#常见提供程序与驱动器

提供程序驱动器示例说明平台
FileSystemC:、/文件和目录全部平台
EnvironmentEnv:环境变量全部平台
VariableVariable:PowerShell 变量全部平台
RegistryHKLM:、HKCU:Windows 注册表仅 Windows
CertificateCert:证书存储仅 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 等可移植的路径写法。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2