Cela dépend un peu de ce que vous appelez un "lecteur". Dans PowerShell, certains lecteurs représentent vos volumes habituels locaux ou mappés sur le réseau, ainsi que des lecteurs contenant d'autres objets tels que des alias, des variables d'environnement, des fonctions, des variables PowerShell, des ruches de registre, etc.
Pour voir une liste de tous les "lecteurs" dans PowerShell, utilisez:
Get-PSDrive
Ou vous pouvez utiliser l'alias intégré:
gdr
(N'importe où vous voyez Get-PSDrive
ci - dessous, vous pouvez remplacer à la gdr
place.)
Pour obtenir uniquement des lecteurs FileSystem, par exemple: des volumes ou des baies de supports mappés sur le réseau ou sur le réseau, utilisez:
Get-PSDrive -PSProvider FileSystem
Pour obtenir seulement les lecteurs locaux ou seulement les disques durs, je ne pouvais pas trouver une propriété appropriée ou d'une méthode dans la sortie des objets par Get-PSDrive
filtrer par. Un peu après Google, j'ai trouvé la documentation Get-PSDrive de Microsoft sur TechNet . Là, avec des détails sur l'utilisation Get-PSDrive
, quelques autres méthodes d'énumération de lecteurs accessibles à PowerShell sont également répertoriées. J'ai trouvé utile de passer par la classe System.IO.DriveInfo dans le .NET Framework.
La commande ci-dessous, exécutable via PowerShell, répertorie uniquement les disques durs locaux.
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -eq 'Fixed'}
Si vous souhaitez inclure un lecteur local - pas seulement des disques durs - utilisez ceci:
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'}
Si vous voulez seulement voir les lettres de lecteur, dirigez la sortie vers Select-Object
, comme ceci:
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'} | Select-Object -Property Name
Notez que Where-Object
et Select-Object
ont également des alias intégrés de ?
et select, respectively. (
Where-Object is also usable as
où` - c’est vraiment une question de préférence.) La classe System.IO.DriveInfo peut également être réduite à seulement IO.DriveInfo. Donc, cette dernière commande pourrait être lancée comme ceci, si vous voulez:
[IO.DriveInfo]::getdrives() | ? {$_.DriveType -ne 'Network} | select -Property Name
Bien sûr, vous pouvez faire beaucoup d'autres choses Get-PSDrives
, les classes .NET accessibles via PowerShell, ainsi que de nombreux autres raccourcis PowerShell disponibles. Je vous suggère de lire en plus sur TechNet et des sites similaires, et en utilisant les Get-Help
et Get-Command
cmdlets pour acquérir une meilleure connaissance de l'environnement.