当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

作者:精品下载站 日期:2024-12-14 12:35:44 浏览:15 分类:玩电脑

新的 PSDrive 和其他 PowerShell 驱动器扭转了局面


如果您使用 PowerShell 来处理文件系统、注册表、证书甚至网络驱动器,则必须检查 PowerShell 驱动器。 PowerShell 驱动器或 PS 驱动器是 PowerShell 中的一个概念,允许您使用文件系统等结构化数据。 New PSDrive cmdlet 是开始的方式。

在本教程中,您将了解 PS 驱动器的工作原理、一些用于处理 PS 驱动器的 cmdlet,以及最终如何使脚本编写任务变得更轻松。

打开 PowerShell 控制台,让我们开始吧!

先决条件

本教程将是一个实践演示。如果您想继续操作,请确保您具备以下条件:

  • Windows PC - 尽管 PS 驱动器可以在其他平台上的 PowerShell 中运行,但本教程中的所有演示都将使用 Windows。
  • 如果您想观看其中一个演示,请提供可用的 SMB 网络共享。

使用 Get-PSDrive 检查 PS 驱动器

PowerShell 开箱即用,安装了一些默认驱动器。要查看这些驱动器,请运行 Get-PSDrive 命令。 PowerShell 将从熟悉的驱动器返回各种驱动器,例如文件系统驱动器(例如 C)或注册表驱动器(例如 HKLMHKCU)。

Get-PSDrive

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

PS 驱动器所包含的数据类型因供应商而异。 PowerShell 使用这些提供程序来公开每个驱动器内的数据。您可以在上面看到 Get-PSDrive 已从八个不同的提供商返回驱动器。

您可以通过运行 Get-PSProvider 查找计算机上安装的所有提供程序。如下所示,不同的提供程序具有不同的功能,决定每个提供程序如何与当前 PowerShell 会话交互。

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

Get-PSDrive 还有一些方便的参数,例如 PSProvider 参数。此参数允许您过滤特定提供商返回的 PS 驱动器。您将在下面看到 Get-PSDrive 仅返回由 FileSystem 提供程序提供服务的驱动器。

Get-PSDrive -PSProvider FileSystem

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

导航 PS 驱动器

一旦您知道哪些 PS 驱动器可用,您就可以查看每个驱动器的内部内容。例如,Env 驱动器是包含 Windows 环境变量的默认 PS 驱动器。就像文件系统一样,您可以浏览环境变量。

要浏览 Env 驱动器,请使用 cdSet-Location 更改为驱动器号,就像通常使用文件系统一样,然后运行 lsGet-ChildItem,如下所示。

记下每个示例末尾的冒号。您必须使用冒号来表示 PS 驱动器。

cd Env:
ls

运行 ls 后,如下所示,您将看到 PowerShell 返回 Windows 中每个环境变量的键/值对。

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

使用 New PSDrive 创建新的 PS 驱动器

您已经了解到,PowerShell 附带了一些内置 PS 驱动器,但您也可以使用 New-PSDrive cmdlet 自行创建自定义驱动器。

New-PSDrive cmdlet 最常见的用途之一是与 FileSystem 提供程序一起创建文件系统目录的“快捷方式”,甚至映射网络驱动器。使用 New-PSDrive 您可以将标签分配给各种文件系统位置。

使用 New-PSDrive 映射文件共享

例如,也许您的网络上有一个 SMB 文件共享,您需要将该共享映射到驱动器号。您可以通过 GUI 映射该网络驱动器,或者如果您更喜欢命令行或构建脚本,则可以使用 PowerShell。

在此示例中,假设您的网络共享位于 UNC 路径 \localhost\PSDRIVE

本地计算机 (localhost) 仅用作示例。您可以以同样的方式使用 New-PSDrive 映射实际的网络驱动器。

要使用 New PSDrive 映射网络驱动器,请提供:

  • 您要创建的驱动器的名称(本例中为NetShare)。
  • 驱动器将使用的提供程序 (PSProvider) 类型(本例中为 FileSystem)。
  • 使用 Root 参数的文件共享或 \localhost\PSDRIVE 的路径。

运行 New-PSDrive,如下所示,然后运行 Get-ChildItem 以查看文件共享中的内容。

New-PSDrive -Name "NetShare" -PSProvider "FileSystem" -Root "\localhost\PSDRIVE"
Get-ChildItem -Path NetShare:

您会发现,现在引用 NetShare 与直接引用 \localhost\PSDRIVE 是一样的。

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

需要为您的新驱动器分配一些注释吗?也许用于存储文档的文件共享?使用 Description 参数,例如 -Description 'The file share to store docs'

使用适用于 Windows GUI 的文件系统 PS 驱动器

在上面的示例中,PS 驱动器仅在 PowerShell 中显示。以这种方式使用 New PSDrive 在技术上并不像 GUI 那样映射网络驱动器。但是,您仍然可以通过添加 Persist 参数来完成此操作。

Persist 参数告诉 New PSDrive 将驱动器公开给 Windows,而不是 PowerShell。例如,您可以使用以下命令将 X 驱动器映射到 \WDMYCLOUD\Garry 文件共享。

New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\WDMYCLOUD\Garry" -Persist

您现在将看到 X 驱动器显示在 Windows 文件资源管理器中。

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

为长目录路径创建文件系统 PS 驱动器

除了映射文件共享之外,您还可以使用 New-PSDrive cmdlet 创建 PS 驱动器,这样还可以节省一些打字时间!通过基于某些长目录路径创建驱动器,您可以将名为 C:\thisisareallylongdirectorypath\Ido\not\want\totype 的目录更改为简单的 C:\LongDirPath.

为了演示实际示例,Microsoft SQL Server2019 默认情况下将其日志存储在 C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Log 目录中。如果您经常发现自己在 PowerShell 中更改到该目录,那么每次快速键入该目录都会变得过时。

不要输入长目录路径,而是使用 New-PSDrive 创建一个名为 sqllog 的 PS 驱动器。创建好后,直接改成不带原来的目录路径,而是带PS盘名。

New-PSDrive -Name sqlLog -PSProvider "FileSystem" -Root "C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\og"
Set-Location sqlLog:

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

与注册表合作

PS 驱动器不仅仅属于文件系统。请记住,PS 驱动器使用不同的提供商。这些提供商之一是注册表。使用您所学的相同技术,您还可以创建任何您想要的注册表项的“快捷方式”。

要在注册表提供程序上创建 PS 驱动器,请将 Registry 参数传递给 PSProvider 参数,并使用 Root 的注册表项路径(而不是目录路径) ,如下所示。请注意,此示例还使用了可选的 Description 参数来设置 PS 驱动器上的描述。

New-PSDrive -Name "myRegistry" -PSProvider "Registry" -Root "HKLM\Software" -Description 'my local Registry key'

创建后,运行 Get-PSDrive 来检查您的工作。以下示例使用 Format-Table cmdlet 将输出限制为仅 NameDescription 属性。默认情况下,Description 属性不可见。

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

使用 Remove-PSDrive 删除 PS 驱动器

最后,也许您已经完成了 PS 驱动器的使用,是时候进行清理了。为此,请使用 Remove-PSDrive cmdlet。使用 Remove-PSDrive cmdlet 最直观的方法之一是使用 PowerShell 管道。通过“管道”PS 驱动器到 Remove-PSDrive,您可以一次删除一个或多个驱动器。

例如,也许您已遵循本教程中的所有示例,并希望将它们全部删除。不要运行 Remove-PSDrive 三次,而是使用 Get-PSDrive 读取它们并将每个驱动器通过管道传输到 Remove-PSDrive,如图所示以下。

Get-PSDrive -Name NetShare, sqlLog, X | Remove-PSDrive -Force -Scope Global

请注意,下面每个 PS 驱动器都是之前创建的,但运行上述命令已将它们全部删除。

请注意,ForceScope 参数是可选的。即使文件已打开,Force 参数也会删除 PS 驱动器,而 Scope 会删除使用 New-PSDrive -Scope 在全局范围中定义的驱动器参数。

[玩转系统] 新的 PSDrive 和其他 PowerShell 驱动器扭转了局面

结论

PS 驱动器可以节省大量时间,并帮助您更轻松地浏览文件系统、注册表和其他数据源。您是否受到启发,想要在脚本中尝试 PS 驱动器?如果是这样,怎么办?

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯