PowerShell 提供程序和驱动器(七)

PowerShell 提供程序和 PowerShell 驱动器

PowerShell 提供程序

提供程序 = 把不同的数据存储抽象成“虚拟驱动器”来统一管理。

提供程序是一种“适配器”,它把不同的数据存储(文件系统、注册表、证书存储等)映射成类似文件系统的导航结构,让你可以用 cddirlsGet-ChildItem 等命令像操作文件夹一样去操作。

查看当前系统的提供程序

Get-PSProvider

输出如下:(不一定是下面这些,有的机器都有变化)

Name Capabilities Drives
FileSystem Filter, ShouldProcess, Credentials C, D, …
Registry ShouldProcess, Transactions, ExpandWildcards HKLM, HKCU
Certificate Filter, ShouldProcess, Include, Exclude Cert
Alias ShouldProcess Alias
Function ShouldProcess Function
Variable ShouldProcess Variable
Environment ShouldProcess Env

先看最直观的效果:

提供程序 路径前缀 用途
FileSystem C:\, D:\ 磁盘目录文件管理
Registry HKLM:\, HKCU:\ 操作注册表
Certificate Cert:\ 管理证书
Alias Alias:\ 查看和修改命令别名
Function Function:\ 查看函数
Variable Variable:\ 管理变量
Environment Env:\ 管理环境变量

统一了操作方式,下面这个才是我们需要记住的,就是Get-ChildItem去查看很多不同的类型
无论是文件、注册表、证书还是变量,你都可以用类似的命令操作:

# 查看文件夹
Get-ChildItem C:\Windows

# 查看注册表键
Get-ChildItem HKLM:\Software

# 查看证书
Get-ChildItem Cert:\LocalMachine\My

# 查看变量
Get-ChildItem Variable:

表中有Capabilities列的,意思是:

  • ShouldProcess → 允许 -WhatIf-Confirm,用于预览和确认更改。
  • Filter → 支持快速筛选,而不是在本地循环。
  • Include/Exclude → 支持用通配符来包含或排除对象。
  • ExpandWildcards → 可以在路径里使用 *? 等通配符。
  • Credentials → 支持使用 -Credential 来指定不同用户身份访问。
  • Transactions → 支持事务操作(例如注册表操作可以回滚)。

例子:

# Registry 提供程序支持 -UseTransaction
Start-Transaction
New-Item -Path "HKCU:\Software\TestKey" -UseTransaction
Complete-Transaction

如果换成 FileSystem 提供程序(比如 New-Item C:\TestFile.txt -UseTransaction),就会报错,因为 文件系统不支持事务/回滚

查看提供程序的帮助文件

帮助文件使用 about_ProviderName_Provider 命名格式
例如,FileSystem 提供程序的帮助文件为 about_FileSystem_Provider
可通过运行以下命令来查看此帮助文件的内容:

Get-Help about_FileSystem_Provider

再者:获取注册表提供程序的帮助信息

Get-Help about_Registry_Provider

以此类推,把中间的改成你要获取的 “提供程序” 名字即可

Get-Help about_YourName_Provider

使用PowerShell 驱动器

查看 PowerShell 驱动器

Get-PSDrive
Name Provider Root CurrentLocation
C FileSystem C:|Users\Admin
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
Env Environment
Cert Certificate
Alias Alias
Variable Variable

下表介绍了与常用 PSDrive 关联的谓词:

动词 描述
New 创建新的项或项属性。
Set 设置项或项属性的值。
Get 显示项或子项的属性,或项属性的值。
Clear 清除项或项属性的值。
Copy 将项或项属性从一个位置复制到另一个位置。
Move 将项或项属性从一个位置移动到另一个位置。
Remove 删除项或项属性。
Rename 重命名项或项属性。
Invoke 执行与项关联的默认操作。

驱动器的特点

  1. 名称唯一
    • 可以是一个字母(如 C),也可以是多个字符(如 HKCUEnv)。
    • 用于路径时要加冒号,比如 C:HKCU:Env:
  2. 依赖提供程序
    • 驱动器继承其底层提供程序的所有功能(筛选、事务、凭据等)。
  3. 默认驱动器(新会话必有):
    • FileSystem 驱动器:如 C:
    • 注册表驱动器HKLM:HKCU:
    • 特殊存储驱动器Variable:Function:Alias:
    • 环境变量驱动器Env:
    • 证书驱动器Cert:
    • WSMan 驱动器WSMan:(管理远程连接配置)
处理 PowerShell 驱动器位置

驱动器位置的命令

命令 描述
Get-Location 显示当前工作位置。
Set-Location 设置当前工作位置。
Push-Location 将位置添加到位置堆栈的顶部。
Pop-Location 将当前位置更改为位置堆栈顶部的位置。
管理文件系统

PowerShell 提供了 文件系统驱动器(PSDrive)和 文件系统提供程序(FileSystem Provider),可以用 cmdlet 来管理文件和文件夹,同时也保留了命令提示符的别名,让 cmd.exe 用户可以快速上手。


别名与 cmdlet 对应关系

cmd.exe 命令 PowerShell 别名 对应 cmdlet 说明
Dir Dir Get-ChildItem 列出目录和文件
Cd Cd Set-Location 切换目录
Md / MkDir Md New-Item 创建新文件夹
Rd / RmDir Rd Remove-Item 删除文件夹
Del Del Remove-Item 删除文件
Copy Copy Copy-Item 复制文件/文件夹
Move Move Move-Item 移动文件/文件夹
Ren Ren Rename-Item 重命名文件/文件夹

注意

  • PowerShell 不使用 /s/q 等 cmd.exe 参数。
  • 通配符和参数需要使用 -Recurse-Force-Filter 等 PowerShell 风格。

移动目录

# 使用绝对路径
Set-Location C:\Users

# 使用相对路径
Set-Loc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹等寒

谢过道友支持,在下就却之不恭了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值