web-dev-qa-db-fra.com

Répertorie tous les périphériques, partitions et volumes dans Powershell

J'ai plusieurs volumes (comme presque tout le monde aujourd'hui): sous Windows, ils sont spécifiés en tant que C :, D: etc. Comment puis-je les lister tous comme sur une machine Unix avec "ls/mnt /" avec Powershell? 

33
wishi

Pour obtenir tous les lecteurs du système de fichiers, vous pouvez utiliser la commande suivante:

gdr -PSProvider 'FileSystem'

gdr est un alias pour Get-PSDrive , qui inclut tous les "lecteurs virtuels" du registre, etc.

56
bdukes

Get-Volume

vous obtiendrez: DriveLetter, FileSystemLabel, FileSystem, DriveType, HealthStatus, SizeRemaining et Size

10
Vladimir Valchev

Sur Windows Powershell:

Get-PSDrive 
[System.IO.DriveInfo]::getdrives()
wmic diskdrive
wmic volume

Aussi, l'utilitaire dskwipe: http://smithii.com/dskwipe

dskwipe.exe -l
8
user1420526

Premièrement, sur Unix, vous utilisez mount, pas ls /mnt: de nombreux objets ne sont pas montés dans /mnt.

Quoi qu'il en soit, il existe la commande DOS mountvol qui continue de fonctionner dans Powershell, ainsi que le Get-PSDrive spécifique à Powershell.

4
ephemient

C'est assez vieux, mais j'ai trouvé cela à noter:

PS N:\> (measure-command {Get-WmiObject -Class Win32_LogicalDisk|select -property deviceid|%{$_.deviceid}|out-Host}).totalmilliseconds
...
928.7403
PS N:\> (measure-command {gdr -psprovider 'filesystem'|%{$_.name}|out-Host}).totalmilliseconds
...
169.474

Sans propriétés de filtrage, sur mon système de test, 4319.4196ms à 1777.7237ms. Sauf si un objet PS-Drive doit être renvoyé, je resterai avec WMI.

MODIFIER: Je pense que nous avons un gagnant: PS N:> (measure-command {[System.IO.DriveInfo] :: getdrives () |% {$ _. Name} | out-Host}) 110.9819

2
Yevgeniy

Bien que cela ne soit pas spécifique à "PowerShell" ... vous pouvez facilement lister les lecteurs et les partitions en utilisant diskpart, list volume

PS C:\Dev> diskpart

Microsoft DiskPart version 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: Box

DISKPART> list volume

Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
----------  ---  -----------  -----  ----------  -------  ---------  --------
Volume 0     D                       DVD-ROM         0 B  No Media
Volume 1         C = System   NTFS   Partition    100 MB  Healthy    System
Volume 2     G   C = Box      NTFS   Partition    244 GB  Healthy    Boot
Volume 3     H   D = Data     NTFS   Partition    687 GB  Healthy
Volume 4     E   System Rese  NTFS   Partition    100 MB  Healthy
1
Eddie B

Nous avons plusieurs volumes par lecteur (certains sont montés sur des sous-répertoires sur le lecteur). Ce code affiche une liste des points de montage et des étiquettes de volume. Évidemment, vous pouvez aussi extraire de l’espace libre, etc.:

gwmi win32_volume|where-object {$_.filesystem -match "ntfs"}|sort {$_.name} |foreach-object {
  echo "$(echo $_.name) [$(echo $_.label)]"
}
0
Patrick