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?
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.
Get-Volume
vous obtiendrez: DriveLetter, FileSystemLabel, FileSystem, DriveType, HealthStatus, SizeRemaining et Size
Sur Windows Powershell:
Get-PSDrive
[System.IO.DriveInfo]::getdrives()
wmic diskdrive
wmic volume
Aussi, l'utilitaire dskwipe: http://smithii.com/dskwipe
dskwipe.exe -l
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.
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
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
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)]"
}