私は複数のボリュームを持っています(今日ではほぼ全員):Windowsでは、C:、D:などと指定されています。 Powershellで「ls/mnt /」を使用してUnixマシンでこれらをすべて一覧表示するにはどうすればよいですか?
すべてのファイルシステムドライブを取得するには、次のコマンドを使用できます。
gdr -PSProvider 'FileSystem'
gdr
は Get-PSDrive
。レジストリなどのすべての「仮想ドライブ」が含まれます。
Get-Volume
取得します:DriveLetter、FileSystemLabel、FileSystem、DriveType、HealthStatus、SizeRemainingおよびSize
Windows Powershellの場合:
Get-PSDrive
[System.IO.DriveInfo]::getdrives()
wmic diskdrive
wmic volume
また、ユーティリティdskwipe: http://smithii.com/dskwipe
dskwipe.exe -l
まず、Unixではls /mnt
ではなくmount
を使用します:/mnt
には多くのものがマウントされていません。
とにかく、Powershellで引き続き動作するmountvol
DOSコマンドがあり、Powershell固有のGet-PSDrive
があります。
これはかなり古いですが、次の点に注意してください。
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
フィルタリングプロパティなしで、私のテストシステムでは、4319.4196ミリ秒から1777.7237ミリ秒です。 PS-Driveオブジェクトを返す必要がない限り、WMIに固執します。
編集:勝者がいると思う:PS N:>(measure-command {[System.IO.DriveInfo] :: getdrives()|%{$ _。name} | out-Host})。to talmilliseconds 110.9819
これは「powershell」固有ではありませんが、diskpartを使用してドライブとパーティションを簡単にリストでき、ボリュームをリストできます。
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
ドライブごとに複数のボリュームがあります(一部はドライブのサブディレクトリにマウントされています)。このコードは、マウントポイントとボリュームラベルのリストを示しています。もちろん、空き領域などを抽出することもできます。
gwmi win32_volume|where-object {$_.filesystem -match "ntfs"}|sort {$_.name} |foreach-object {
echo "$(echo $_.name) [$(echo $_.label)]"
}