Listar todos os dispositivos, partições e volumes no PowerShell
-
12-09-2019 - |
Pergunta
Eu tenho vários volumes (como quase todo mundo hoje em dia): no Windows eles acabam especificado como C :, D: e assim por diante. Como posso listar todos estes como em uma máquina Unix com "ls / mnt /" com o PowerShell?
Solução
Para obter todas as unidades do sistema de arquivos, você pode usar o seguinte comando:
gdr -PSProvider 'FileSystem'
gdr
é um alias para Get-PSDrive
, que inclui todos os "discos virtuais" para o registro, etc.
Outras dicas
Get-Volume
Você receberá: DriveLetter, FileSystemLabel, FileSystem, DriveType, HealthStatus, SizeRemaining e tamanho
No Windows PowerShell:
Get-PSDrive
[System.IO.DriveInfo]::getdrives()
wmic diskdrive
wmic volume
Além disso, o dskwipe utilitário: http://smithii.com/dskwipe
dskwipe.exe -l
Em primeiro lugar, no Unix você usa mount
, não ls /mnt
:. Muitas coisas são montados nos /mnt
De qualquer forma, há o comando DOS mountvol
, que continua a trabalhar em PowerShell, e há o Get-PSDrive
específicas do PowerShell.
Isso é muito velho, mas eu achei seguinte dignos de nota:
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
Sem propriedades de filtragem, no meu sistema de teste, 4319.4196ms para 1777.7237ms. A menos que eu preciso de um objeto PS-Drive voltou, eu vou ficar com WMI.
EDIT: Acho que temos um vencedor: PS N:> (medida de comando {. [System.IO.DriveInfo] :: getdrives () |% {$ _ name} | out-host}) para talmilliseconds. 110.9819
Embora este não é 'PowerShell' específico ... você pode facilmente listar as unidades e partições usando diskpart, o volume da lista ??p>
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
Temos vários volumes por unidade (alguns são montados em subdiretórios na unidade). Este mostra o código uma lista dos pontos de montagem e etiquetas de volume. Obviamente, você também pode extrair o espaço livre e assim por diante:
gwmi win32_volume|where-object {$_.filesystem -match "ntfs"}|sort {$_.name} |foreach-object {
echo "$(echo $_.name) [$(echo $_.label)]"
}
comando Executar:
Get-PsDrive -PsProvider FileSystem
Para mais informações consulte:
PS Função:> obter-psdrive