Isso depende do que você está chamando de "drive". No PowerShell, há unidades que representam seus volumes locais ou mapeados em rede usuais, além de unidades que contêm outros objetos, como Aliases, Variáveis de Ambiente, Funções, Variáveis do PowerShell, Hives do Registro e muito mais.
Para ver uma lista de todas as "unidades" no PowerShell, use:
Get-PSDrive
Ou você pode usar o alias interno:
gdr
(Em qualquer lugar que você veja Get-PSDrive
abaixo, você pode substituir gdr
.)
Para obter apenas unidades FileSystem, por exemplo: volumes ou compartimentos de mídia mapeados em rede ou locais, use:
Get-PSDrive -PSProvider FileSystem
Para obter apenas unidades locais ou apenas discos rígidos, não consegui encontrar uma propriedade ou um método apropriado na saída de objetos Get-PSDrive
para filtrar por. Um pouco pesquisando depois, achei a documentação Get-PSDrive da Microsoft no TechNet . Lá, junto com detalhes de como usar Get-PSDrive
, alguns outros métodos acessíveis de PowerShell de enumeração de unidade também são listados. Um que eu achei útil é através da classe System.IO.DriveInfo no .NET Framework.
O comando abaixo, executável via PowerShell, listará apenas os discos rígidos locais.
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -eq 'Fixed'}
Se você quiser incluir qualquer unidade local, não apenas discos rígidos, use:
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'}
Se você quiser ver apenas letras de unidade, canalize a saída para Select-Object
, desta forma:
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'} | Select-Object -Property Name
Observe que Where-Object
e Select-Object
também possuem aliases internos de ?
e select, respectively. (
Where-Object is also usable as
em que '- é realmente uma questão de preferência.) O System.IO.DriveInfo A classe também pode ser reduzida para apenas IO.DriveInfo. Então, esse último comando pode ser executado como este, se você quiser:
[IO.DriveInfo]::getdrives() | ? {$_.DriveType -ne 'Network} | select -Property Name
É claro que há muito mais a fazer com Get-PSDrives
e as classes .NET acessíveis por meio do PowerShell, além de muitos outros atalhos do PowerShell disponíveis. Sugiro ler mais sobre o TechNet e sites semelhantes e usar os cmdlets Get-Help
e Get-Command
para obter melhor familiaridade com o ambiente.