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?

Était-ce utile?

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:

scroll top