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?

Foi útil?

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

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:

text alt

PS Função:> obter-psdrive

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top