Get-PSDrive

获取当前会话中的驱动器。

语法

Get-PSDrive
   [[-Name] <String[]>]
   [-Scope <String>]
   [-PSProvider <String[]>]
   [-UseTransaction]
   [<CommonParameters>]
Get-PSDrive
   [-LiteralName] <String[]>
   [-Scope <String>]
   [-PSProvider <String[]>]
   [-UseTransaction]
   [<CommonParameters>]

说明

Get-PSDrive cmdlet 获取当前会话中的驱动器。 可以获取会话中的特定驱动器或所有驱动器。

此 cmdlet 获取以下类型的驱动器:

  • 计算机上的 Windows 逻辑驱动器,包括映射到网络共享的驱动器。
  • 由 Windows PowerShell 提供程序公开的驱动器(如 Certificate:、Function: 和 Alias: 驱动器)以及由 Windows PowerShell Registry 提供程序公开的 HKLM: 和 HKCU: 驱动器。
  • 通过使用 cmdlet 创建的会话指定的临时驱动器和永久的映射网络驱动器。

从 Windows PowerShell 3.0 开始,New-PSDrive cmdlet 的 Persist 参数可以创建在本地计算机上保存并可用于其他会话的映射网络驱动器。 有关详细信息,请参阅 New-PSDrive。

此外,从 Windows PowerShell 3.0 开始,当外部驱动器连接到计算机时,Windows PowerShell 自动将 PSDrive 添加到代表新驱动器的文件系统中。 你无需重启 Windows PowerShell。 简单来说,当从计算机断开连接外部驱动器时,Windows PowerShell 会自动删除代表删除的驱动器的 PSDrive。

示例

示例 1:获取当前会话中的驱动器

PS C:\> Get-PSDrive

Name       Provider      Root
----       --------      ----
Alias      Alias
C          FileSystem    C:\
Cert       Certificate   \
D          FileSystem    D:\
Env        Environment
Function   Function
HKCU       Registry      HKEY_CURRENT_USER
HKLM       Registry      HKEY_LOCAL_MACHINE
Variable   Variable

此命令获取当前会话中的驱动器。

输出显示硬盘驱动器 (C:) 、CD-ROM 驱动器 (D:) ,Windows PowerShell提供程序公开的驱动器 (别名:、Cert:、Env:、Function:、HKCU:、HKLM:和 Variable:) 。

示例 2:在计算机上获取驱动器

PS C:\> Get-PSDrive D

Name       Provider      Root
----       --------      ----
D          FileSystem    D:\

此命令获取计算机上的 D: 驱动器。 请注意,该命令中的驱动器号后面不带冒号。

示例 3:获取Windows PowerShell文件系统提供程序支持的所有驱动器

PS C:\> Get-PSDrive -PSProvider FileSystem

Name       Provider      Root
----       --------      ----
C          FileSystem    C:\
D          FileSystem    D:\
X          FileSystem    X:\
Y          FileSystem    \\Server01\Public
Z          FileSystem    C:\Windows\System32

此命令获取 Windows PowerShell FileSystem 提供程序支持的所有驱动器。 这包括固定驱动器、逻辑分区、映射网络驱动器和使用 New-PSDrive cmdlet 创建的临时驱动器。

示例 4:检查驱动器是否用作Windows PowerShell驱动器名称

if (Get-PSDrive X -ErrorAction SilentlyContinue) {
	Write-Host 'The X: drive is already in use.'
} else {
	New-PSDrive -Name X -PSProvider Registry -Root HKLM:\SOFTWARE
}

此命令检查 X 驱动器是否已作为 Windows PowerShell 驱动器名称使用。 否则,该命令使用 New-PSDrive cmdlet 创建映射到 HKLM:\SOFTWARE 注册表项的临时驱动器。

示例 5:比较文件系统驱动器的类型

PS C:\> Get-PSDrive -PSProvider FileSystem

Name       Provider      Root
----       --------      ----
C          FileSystem    C:\
D          FileSystem    D:\
X          FileSystem    X:\
Y          FileSystem    \\Server01\Public
Z          FileSystem    C:\Windows\System32

PS C:\> net use
New connections will be remembered.

Status       Local     Remote                    Network
-------------------------------------------------------------------------------
X:        \\Server01\Public         Microsoft Windows Network

PS C:\> [System.IO.DriveInfo]::GetDrives()

Name               : C:\
DriveType          : Fixed
DriveFormat        : NTFS
IsReady            : True
AvailableFreeSpace : 39831498752
TotalFreeSpace     : 39831498752
TotalSize          : 79900368896
RootDirectory      : C:\
VolumeLabel        :
Name               : D:\
DriveType          : CDRom
DriveFormat        :
IsReady            : False
AvailableFreeSpace :
TotalFreeSpace     :
TotalSize          :
RootDirectory      : D:\
VolumeLabel        :
Name               : X:\
DriveType          : Network
DriveFormat        : NTFS
IsReady            : True
AvailableFreeSpace : 36340559872
TotalFreeSpace     : 36340559872
TotalSize          : 36413280256
RootDirectory      : X:\
VolumeLabel        : D_Drive

PS C:\> Get-WmiObject Win32_LogicalDisk

DeviceID     : C:
DriveType    : 3
ProviderName :
FreeSpace    : 39831252992
Size         : 79900368896
VolumeName   :
DeviceID     : D:
DriveType    : 5
ProviderName :
FreeSpace    :
Size         :
VolumeName   :
DeviceID     : X:
DriveType    : 4
ProviderName : \\server01\public
FreeSpace    : 36340559872
Size         : 36413280256
VolumeName   : D_Drive

PS C:\> Get-WmiObject Win32_NetworkConnection

LocalName                     RemoteName
--------------               ------------
x:                            \\server01\public

此示例将 Get-PSDrive 显示的文件系统驱动器的类型与使用其他方法显示的文件系统驱动器的类型进行比较。 此示例演示在 Windows PowerShell 中显示驱动器的不同方法,并显示使用 New-PSDrive cmdlet 创建的会话特定的驱动器仅可在 Windows PowerShell 中访问。

第一条命令使用 Get-PSDrive 来获取会话中的所有文件系统驱动器。 这包括固定驱动器 (C: 和 D:) ,使用 New-PSDrivePersist 参数创建的映射网络驱动器 (X:) ,以及两个临时Windows PowerShell驱动器( (Y: 和 Z:) ),这些驱动器是在不使用 Persist 参数的情况下使用 New-PSDrive 创建的。

net use 命令(显示 Windows 映射的网络驱动器)仅显示 X 驱动器。 它不会显示通过 New-PSDrive 创建的 Y: 和 Z: 驱动器。 它显示 X: 驱动器还映射到 \\Server01\Public。

第三条命令使用 Microsoft .NET Framework System.IO.DriveInfo 类的 GetDrives 方法。 此命令获取 Windows 文件系统驱动器,包括驱动器 X:,但不获取通过 New-PSDrive 创建的临时驱动器。

第四个命令使用 Get-WmiObject cmdlet 来获取 Win32_LogicalDisk 类的实例。 该命令将返回 C:、D: 和 X: 驱动器,但不返回 New-PSDrive 创建的临时驱动器。

最后一个命令使用 Get-WmiObject cmdlet 来显示 Win32_NetworkConnection 类的实例。 与 net use 一样,它仅返回 New-PSDrive 创建的持久 X: 驱动器。

参数

-LiteralName

指定驱动器的名称。

LiteralName 的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果名称包括转义符,请将其括在单引号中。 单引号会告知 Windows PowerShell 不要将所有字符都解释为转义序列。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

指定此 cmdlet 在操作中获取的驱动器的名称(作为字符串数组)。 键入驱动器名称或驱动器号,不带冒号 (:)。

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-PSProvider

以字符串数组的形式指定Windows PowerShell提供程序。 此 cmdlet 仅获取此提供程序支持的驱动器。 键入提供程序的名称,如 FileSystem、Registry 或 Certificate。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Scope

指定此 cmdlet 获取驱动器的范围。

此参数的可接受值为:

  • 全球
  • Local
  • 脚本
  • 相对于当前范围的数字 (0 到范围数,其中 0 是当前范围,1 是其父) 。 默认值为“Local”。 有关详细信息,请参阅about_Scopes (https://go.microsoft.com/fwlink/?LinkID=113260) 。
Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-UseTransaction

在活动事务中使用该命令。 仅当正在执行事务时,此参数才有效。 有关详细信息,请参阅 about_Transactions。

Type:SwitchParameter
Aliases:usetx
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

None

不能通过管道将对象传递给此 cmdlet。

输出

PSDriveInfo

此 cmdlet 返回表示会话中的驱动器的对象。

备注

  • 此 cmdlet 用于处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请使用 Get-PSProvider cmdlet。 有关详细信息,请参阅 about_Providers
  • 使用 New-PSDrive cmdlet 的 Persist 参数创建的映射网络驱动器是特定于用户帐户的。 在以管理员身份运行选项启动的会话中或使用其他用户凭据启动的会话中创建的映射网络驱动器在不使用显式凭据或当前用户的凭据启动的会话中不可见。