我注意到 cd \ 导航到我的驱动器的根目录。
但我可以在我的计算机上访问其他驱动器。
PowerShell 中是否有一个命令可以列出我可以连接的所有驱动器?
答案1
这在某种程度上取决于你所说的“驱动器”。在 PowerShell 中,有些驱动器代表你通常的本地或网络映射卷,还有一些驱动器包含其他对象,如别名、环境变量、函数、PowerShell 变量、注册表配置单元等。
要在 PowerShell 中查看所有“驱动器”的列表,请使用:
Get-PSDrive
或者您可以使用内置别名:
gdr
(Get-PSDrive
您可以用下面所见的任何地方进行替换gdr
。)
要仅获取文件系统驱动器,例如:本地或网络映射卷或媒体托架,请使用:
Get-PSDrive -PSProvider FileSystem
要得到只是本地驱动器,或只是硬盘,我无法在输出的对象中找到合适的属性或方法来Get-PSDrive
进行筛选。谷歌搜索后,我发现TechNet 上的 Microsoft Get-PSDrive 文档。除了如何使用的详细信息外Get-PSDrive
,还列出了其他一些可通过 PowerShell 访问的驱动器枚举方法。我发现一个有用的方法是通过 .NET Framework 中的 System.IO.DriveInfo 类。
以下命令可通过 PowerShell 执行,将仅列出本地硬盘驱动器。
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -eq 'Fixed'}
如果您想要包含任何本地驱动器 - 而不仅仅是硬盘驱动器 - 请使用以下命令:
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'}
如果您只想查看驱动器号,请将输出通过管道传输到Select-Object
,如下所示:
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'} | Select-Object -Property Name
请注意,Where-Object
和Select-Object
还具有内置别名?
和select, respectively. (
Where-Object is also usable as
where` - 这只是一个偏好问题。)System.IO.DriveInfo 类也可以缩短为 IO.DriveInfo。因此,如果您愿意,可以按如下方式运行最后一个命令:
[IO.DriveInfo]::getdrives() | ? {$_.DriveType -ne 'Network} | select -Property Name
当然,您还可以使用Get-PSDrives
、 和可通过 PowerShell 访问的 .NET 类以及许多其他可用的 PowerShell 快捷方式来做很多事情。我建议您阅读更多有关 TechNet 和类似网站的信息,并使用Get-Help
和Get-Command
cmdlet 来更好地熟悉环境。
答案2
使用以下命令powershell
列出电脑上的所有驱动器
gdr -PSProvider 'FileSystem'
或者
Get-PSDrive -PSProvider 'FileSystem'