Liste de tous les appareils, partitions et volumes en Powershell
-
12-09-2019 - |
Question
J'ai plusieurs volumes (comme presque tout le monde de nos jours): sous Windows, ils finissent par spécifié comme C :, D: et ainsi de suite. Comment puis-je énumérer ces tout comme sur une machine Unix avec « ls / mnt / » avec Powershell?
La solution
Pour tous les lecteurs de système de fichiers, vous pouvez utiliser la commande suivante:
gdr -PSProvider 'FileSystem'
gdr
est un alias pour Get-PSDrive
, qui comprend la totalité de la "lecteurs virtuels" pour le registre, etc.
Autres conseils
Get-volume
vous obtiendrez: DriveLetter, FileSystemLabel, FileSystem, DriveType, HealthStatus, SizeRemaining et taille
Sous Windows Powershell:
Get-PSDrive
[System.IO.DriveInfo]::getdrives()
wmic diskdrive
wmic volume
De plus, le dskwipe d'utilité: http://smithii.com/dskwipe
dskwipe.exe -l
Tout d'abord, sur Unix vous utilisez mount
, pas ls /mnt
:. Beaucoup de choses ne sont pas montés dans /mnt
Quoi qu'il en soit, il y a la commande DOS mountvol
, qui continue à travailler dans Powershell, et il y a le Get-PSDrive
spécifique à Powershell.
Ceci est assez vieux, mais je l'ai trouvé intéressant de noter suivante:
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. À moins que je besoin d'un objet PS-Drive est revenu, je vais rester avec WMI.
EDIT: Je pense que nous avons un gagnant: PS N:> (mesure-commande {[System.IO.DriveInfo] :: getdrives () |% {$ _ name} | out-hôte.}) Pour talmilliseconds. 110.9819
Bien que ce n'est pas « powershell » spécifique ... vous pouvez lister facilement les disques et partitions à l'aide diskpart, le volume de la liste
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 disque (certains sont montés sur des sous-répertoires sur le disque). Ce code affiche une liste des points de montage et les étiquettes de volume. De toute évidence, vous pouvez également extraire l'espace libre et ainsi de suite:
gwmi win32_volume|where-object {$_.filesystem -match "ntfs"}|sort {$_.name} |foreach-object {
echo "$(echo $_.name) [$(echo $_.label)]"
}
Exécuter la commande suivante:
Get-PsDrive -PsProvider FileSystem
Pour plus d'informations, voir: