私は複数のボリュームを持っています(今日ではほとんどすべての人がそうです):WindowsではそれらはC:、D:などとして指定されることになります。Powershellで「ls/mnt /」を使用するUnixマシンのように、これらすべてを一覧表示するにはどうすればよいですか?
11 に答える
すべてのファイル システム ドライブを取得するには、次のコマンドを使用できます。
gdr -PSProvider 'FileSystem'
gdrGet-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 ではmountではなくを使用しますls /mnt。多くのものが にマウントされていません/mnt。
とにかく、mountvolPowershell で引き続き動作する DOS コマンドと、Powershell 固有のGet-PSDrive.
これは「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
これはかなり古いですが、注目に値する次のことがわかりました。
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.4196ms から 1777.7237ms になります。PS-Drive オブジェクトを返す必要がない限り、私は WMI を使い続けます。
編集: 勝者がいると思います: PS N:> (measure-command {[System.IO.DriveInfo]::getdrives()|%{$_.name}|out-host}).to talmilliseconds 110.9819
ドライブごとに複数のボリュームがあります (ドライブのサブディレクトリにマウントされているものもあります)。このコードは、マウント ポイントとボリューム ラベルのリストを表示します。明らかに、空き領域などを抽出することもできます。
gwmi win32_volume|where-object {$_.filesystem -match "ntfs"}|sort {$_.name} |foreach-object {
  echo "$(echo $_.name) [$(echo $_.label)]"
}
az vm repairMicrosoft には、スクリプトの一部としてこれを行う方法があります(参照: Azure 仮想マシンの修復コマンドを使用して Windows VM を修復する)。
MIT ライセンスの下で利用できます: https://github.com/Azure/repair-script-library/blob/51e60cf70bba38316394089cee8e24a9b1f22e5f/src/windows/common/helpers/Get-Disk-Partitions.ps1