私は複数のボリュームを持っています(今日ではほとんどすべての人がそうです):WindowsではそれらはC:、D:などとして指定されることになります。Powershellで「ls/mnt /」を使用するUnixマシンのように、これらすべてを一覧表示するにはどうすればよいですか?
11 に答える
すべてのファイル システム ドライブを取得するには、次のコマンドを使用できます。
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 ではmount
ではなくを使用しますls /mnt
。多くのものが にマウントされていません/mnt
。
とにかく、mountvol
Powershell で引き続き動作する 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 repair
Microsoft には、スクリプトの一部としてこれを行う方法があります(参照: Azure 仮想マシンの修復コマンドを使用して Windows VM を修復する)。
MIT ライセンスの下で利用できます: https://github.com/Azure/repair-script-library/blob/51e60cf70bba38316394089cee8e24a9b1f22e5f/src/windows/common/helpers/Get-Disk-Partitions.ps1